Invoke signer recipe from engine v2.

Enable codesigning functionality in engine v2 recipes.

Change-Id: I01176da12ded2a2a2a109390548febf121856a17
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/37281
Reviewed-by: Xilai Zhang <xilaizhang@google.com>
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
Reviewed-by: Casey Hillers <chillers@google.com>
(cherry picked from commit c73da7c954000f4979889f2bddb1465305aea106)
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/41709
diff --git a/recipe_modules/adhoc_validation/examples/full.expected/docs.json b/recipe_modules/adhoc_validation/examples/full.expected/docs.json
index a86fcb7..51fa121 100644
--- a/recipe_modules/adhoc_validation/examples/full.expected/docs.json
+++ b/recipe_modules/adhoc_validation/examples/full.expected/docs.json
@@ -236,7 +236,7 @@
       ]
     },
     "infra_step": true,
-    "name": "Docs.Copy gs://flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/api_docs.zip",
+    "name": "Docs.Copy [START_DIR]/flutter sdk/dev/docs/api_docs.zip to tmp location",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -272,7 +272,7 @@
       ]
     },
     "infra_step": true,
-    "name": "Docs.gsutil flutter/12345abcde12345abcde12345abcde12345abcde/api_docs.zip",
+    "name": "Docs.gsutil Upload [START_DIR]/flutter sdk/dev/docs/api_docs.zip to gs://flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/api_docs.zip",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
diff --git a/recipe_modules/adhoc_validation/examples/full.expected/linux.json b/recipe_modules/adhoc_validation/examples/full.expected/linux.json
index 99ca480..b31be0a 100644
--- a/recipe_modules/adhoc_validation/examples/full.expected/linux.json
+++ b/recipe_modules/adhoc_validation/examples/full.expected/linux.json
@@ -236,7 +236,7 @@
       ]
     },
     "infra_step": true,
-    "name": "Docs.Copy gs://flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/api_docs.zip",
+    "name": "Docs.Copy [START_DIR]/flutter sdk/dev/docs/api_docs.zip to tmp location",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -272,7 +272,7 @@
       ]
     },
     "infra_step": true,
-    "name": "Docs.gsutil flutter/12345abcde12345abcde12345abcde12345abcde/api_docs.zip",
+    "name": "Docs.gsutil Upload [START_DIR]/flutter sdk/dev/docs/api_docs.zip to gs://flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/api_docs.zip",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
diff --git a/recipe_modules/archives/__init__.py b/recipe_modules/archives/__init__.py
index 35fefba..7bd1c65 100644
--- a/recipe_modules/archives/__init__.py
+++ b/recipe_modules/archives/__init__.py
@@ -4,6 +4,7 @@
 
 DEPS = [
     'depot_tools/gsutil',
+    'flutter/monorepo',
     'flutter/repo_util',
     'recipe_engine/buildbucket',
     'recipe_engine/file',
diff --git a/recipe_modules/archives/api.py b/recipe_modules/archives/api.py
index 74e02d6..263c986 100644
--- a/recipe_modules/archives/api.py
+++ b/recipe_modules/archives/api.py
@@ -15,8 +15,11 @@
   remote = attr.ib(type=str)
 
 
-DEFAULT_BUCKET = 'flutter_archives_v2'
 ANDROID_ARTIFACTS_BUCKET = 'download.flutter.io'
+
+# Monorepo constant.
+MONOREPO = 'monorepo'
+
 # Used for mock paths
 DIRECTORY = 'DIRECTORY'
 
@@ -33,6 +36,35 @@
 )
 
 
+# Bucket + initial prefix for artifact destination.
+LUCI_TO_GCS_PREFIX = {
+    'flutter': 'flutter_infra_release',
+    MONOREPO: 'flutter_archives_v2/monorepo/flutter_infra_release',
+    'prod': 'flutter_infra_release',
+    'staging': 'flutter_archives_v2/flutter_infra_release',
+    'try': 'flutter_archives_v2/flutter_infra_release',
+    'try.shadow': 'flutter_archives_v2/flutter_infra_release'
+}
+
+# Bucket + initial prefix for artifact destination.
+LUCI_TO_ANDROID_GCS_PREFIX = {
+    'flutter': '',
+    MONOREPO: 'flutter_archives_v2/monorepo',
+    'prod': '',
+    'staging': 'flutter_archives_v2',
+    'try': 'flutter_archives_v2',
+    'try.shadow': 'flutter_archives_v2'
+}
+
+# Subpath for realms. A realm is used to separate file destinations
+# within the same configuration. E.g. production environment with
+# an experimental realm and production environment with a production realm.
+REALM_TO_PATH = {
+    'production': '',
+    'experimental': 'experimental'
+}
+
+
 class ArchivesApi(recipe_api.RecipeApi):
   """Api to handle archives from engine_v2 recipes."""
 
@@ -79,7 +111,8 @@
       A tuple with the bucket as the first item and the path to the
       object as the second parameter.
     """
-    matches = re.match('gs://(\w+)/(.+)', dst)
+
+    matches = re.match('gs://([\w.]+)/(.+)', dst)
     return (matches.group(1), matches.group(2))
 
   def upload_artifact(self, src, dst, metadata=None):
@@ -98,13 +131,13 @@
     archive_dir = self.m.path.mkdtemp()
     local_dst_tree = archive_dir.join(*dir_part.split('/'))
     self.m.file.ensure_directory('Ensure %s' % dir_part, local_dst_tree)
-    self.m.file.copy('Copy %s' % dst, src, local_dst_tree)
+    self.m.file.copy('Copy %s to tmp location' % src, src, local_dst_tree)
     self.m.gsutil.upload(
+        name='Upload %s to %s' % (src, dst),
         source='%s/*' % archive_dir,
         bucket=bucket,
         dest='',
         args=['-r'],
-        name=path,
         metadata=metadata,
     )
 
@@ -120,34 +153,34 @@
         bucket, path, dst, name="download %s" % src
     )
 
-  def engine_v2_gcs_paths(self, checkout, archive_config, bucket=DEFAULT_BUCKET):
+  def engine_v2_gcs_paths(self, checkout, archive_config):
     """Calculates engine v2 GCS paths from an archive config.
 
     Args:
       checkout: (Path) the engine repository checkout folder.
       archive_config: (dict) the archive configuration for a recipes v2 build.
-      bucket: (str) the bucket used to calculate the object destination.
 
     Returns:
       A list of ArchivePaths with expected local and remote locations for the
       generated artifacts.
     """
     results = []
-    # Do not archive if the build is a try build or has no input commit
-    if (self.m.buildbucket.build.input.gerrit_changes or
-        not self.m.buildbucket.gitiles_commit.project):
+    # Artifacts bucket is calculated using the LUCI bucket but we also use the realm to upload
+    # artifacts to the same bucket but different path when the build configurations use an experimental
+    # realm. Defaults to experimental.
+    artifact_realm = REALM_TO_PATH.get(archive_config.get('realm', ''), 'experimental')
+    # Do not archive if this is a monorepo try build.
+    if self.m.monorepo.is_monorepo_try_build:
       return results
 
-    file_list = self._full_path_list(checkout, archive_config)
     # Calculate prefix and commit.
-    is_monorepo = self.m.buildbucket.gitiles_commit.project == 'monorepo'
-
+    is_monorepo = self.m.buildbucket.gitiles_commit.project == MONOREPO
+    bucket = MONOREPO if is_monorepo else self.m.buildbucket.build.builder.bucket
+    file_list = self._full_path_list(checkout, archive_config)
     if is_monorepo:
       commit = self.m.repo_util.get_commit(checkout.join('../../monorepo'))
-      artifact_prefix = 'monorepo/'
     else:
       commit = self.m.repo_util.get_commit(checkout.join('flutter'))
-      artifact_prefix = ''
 
     for include_path in file_list:
       is_android_artifact = ANDROID_ARTIFACTS_BUCKET in include_path
@@ -160,16 +193,67 @@
       if is_android_artifact:
         # We are not using a slash in the first parameter becase artifact_prefix
         # already includes the slash.
-        artifact_path = '%s%s/%s' % (
-            artifact_prefix, rel_path, base_name)
+        artifact_path = '%s/%s' % (rel_path, base_name)
+        # Replace ANDROID_ARTIFACTS_BUCKET to include the realm.
+        old_location = '/'.join([ANDROID_ARTIFACTS_BUCKET, 'io', 'flutter'])
+        new_location = '/'.join(filter(
+            bool,
+            [ANDROID_ARTIFACTS_BUCKET, 'io', 'flutter', artifact_realm])
+        )
+        artifact_path = artifact_path.replace(old_location, new_location)
+        bucket_and_prefix = LUCI_TO_ANDROID_GCS_PREFIX.get(bucket)
+        artifact_path = '/'.join(filter(bool, [bucket_and_prefix, artifact_path]))
       else:
-        artifact_path = '%sflutter_infra_release/flutter/%s/%s/%s' % (
-            artifact_prefix, commit, rel_path, base_name)
+        bucket_and_prefix = LUCI_TO_GCS_PREFIX.get(bucket)
+        artifact_path = '/'.join(filter(bool, [bucket_and_prefix, 'flutter', artifact_realm, commit, rel_path, base_name]))
 
       results.append(
           ArchivePaths(
               include_path,
-              'gs://%s/%s' % (bucket, artifact_path)
+              'gs://%s' % artifact_path
           )
       )
     return results
+
+  def global_generator_paths(self, checkout, archives):
+    """Calculates the global generator paths for an archive config.
+
+    Args:
+      checkout: (Path) the engine repository checkout folder.
+      archives: (list) list of dictionaries source and destination path
+        of files relative to the gclient checkout.
+
+    Returns:
+      A list of ArchivePaths with expected local and remote locations for the
+      generated artifacts.
+    """
+    results = []
+
+    # Do not archive if this is a monorepo try build.
+    if self.m.monorepo.is_monorepo_try_build:
+      return results
+
+    # Calculate prefix and commit.
+    is_monorepo = self.m.buildbucket.gitiles_commit.project == MONOREPO
+    bucket = MONOREPO if is_monorepo else self.m.buildbucket.build.builder.bucket
+    if is_monorepo:
+      commit = self.m.repo_util.get_commit(checkout.join('../../monorepo'))
+    else:
+      commit = self.m.repo_util.get_commit(checkout.join('flutter'))
+    bucket_and_prefix = LUCI_TO_GCS_PREFIX.get(bucket)
+
+    for archive in archives:
+      # Artifacts bucket is calculated using the LUCI bucket but we also use the realm to upload
+      # artifacts to the same bucket but different path when the build configurations use an
+      # experimental realm. Defaults to experimental.
+      artifact_realm = REALM_TO_PATH.get(archive.get('realm', ''), 'experimental')
+      source = checkout.join(archive.get('source'))
+      artifact_path = '/'.join(
+          filter(
+              bool, [bucket_and_prefix, 'flutter', artifact_realm, commit,
+                        archive.get('destination')]
+          )
+      )
+      dst = 'gs://%s' % artifact_path
+      results.append(ArchivePaths(self.m.path.abspath(source), dst))
+    return results
diff --git a/recipe_modules/archives/examples/full.expected/basic.json b/recipe_modules/archives/examples/full.expected/basic.json
index a3b5f1b..432ffb9 100644
--- a/recipe_modules/archives/examples/full.expected/basic.json
+++ b/recipe_modules/archives/examples/full.expected/basic.json
@@ -62,7 +62,7 @@
       "ensure-directory",
       "--mode",
       "0777",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
+      "[CLEANUP]/tmp_tmp_1/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
     ],
     "infra_step": true,
     "luci_context": {
@@ -77,7 +77,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Ensure flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
+    "name": "Ensure flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
   },
   {
     "cmd": [
@@ -88,7 +88,7 @@
       "/path/to/tmp/json",
       "copy",
       "[START_DIR]/out/android_profile/zip_archives/android-arm-profile/artifacts.zip",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
+      "[CLEANUP]/tmp_tmp_1/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
     ],
     "infra_step": true,
     "luci_context": {
@@ -103,7 +103,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip"
+    "name": "Copy [START_DIR]/out/android_profile/zip_archives/android-arm-profile/artifacts.zip to tmp location"
   },
   {
     "cmd": [
@@ -116,7 +116,7 @@
       "cp",
       "-r",
       "[CLEANUP]/tmp_tmp_1/*",
-      "gs://flutter_archives_v2/"
+      "gs://flutter_infra_release/"
     ],
     "infra_step": true,
     "luci_context": {
@@ -131,9 +131,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip",
+    "name": "gsutil Upload [START_DIR]/out/android_profile/zip_archives/android-arm-profile/artifacts.zip to gs://flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip",
     "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
   },
   {
@@ -145,7 +145,7 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "cp",
-      "gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip",
+      "gs://flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip",
       "[START_DIR]/out/android_profile/zip_archives/android-arm-profile/artifacts.zip"
     ],
     "infra_step": true,
@@ -161,7 +161,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil download gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip"
+    "name": "gsutil download gs://flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip"
   },
   {
     "name": "$result"
diff --git a/recipe_modules/archives/examples/full.expected/monorepo_ci.json b/recipe_modules/archives/examples/full.expected/monorepo_ci.json
index 4902b58..a22e7e1 100644
--- a/recipe_modules/archives/examples/full.expected/monorepo_ci.json
+++ b/recipe_modules/archives/examples/full.expected/monorepo_ci.json
@@ -62,7 +62,7 @@
       "ensure-directory",
       "--mode",
       "0777",
-      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
+      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
     ],
     "infra_step": true,
     "luci_context": {
@@ -77,7 +77,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Ensure monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
+    "name": "Ensure monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
   },
   {
     "cmd": [
@@ -88,7 +88,7 @@
       "/path/to/tmp/json",
       "copy",
       "[START_DIR]/out/android_profile/zip_archives/android-arm-profile/artifacts.zip",
-      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
+      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile"
     ],
     "infra_step": true,
     "luci_context": {
@@ -103,7 +103,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip"
+    "name": "Copy [START_DIR]/out/android_profile/zip_archives/android-arm-profile/artifacts.zip to tmp location"
   },
   {
     "cmd": [
@@ -131,7 +131,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip",
+    "name": "gsutil Upload [START_DIR]/out/android_profile/zip_archives/android-arm-profile/artifacts.zip to gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
     ]
@@ -145,7 +145,7 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "cp",
-      "gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip",
+      "gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip",
       "[START_DIR]/out/android_profile/zip_archives/android-arm-profile/artifacts.zip"
     ],
     "infra_step": true,
@@ -161,7 +161,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil download gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip"
+    "name": "gsutil download gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/android-arm-profile/artifacts.zip"
   },
   {
     "name": "$result"
diff --git a/recipe_modules/archives/examples/global_generator_paths.expected/basic.json b/recipe_modules/archives/examples/global_generator_paths.expected/basic.json
new file mode 100644
index 0000000..0ea5a52
--- /dev/null
+++ b/recipe_modules/archives/examples/global_generator_paths.expected/basic.json
@@ -0,0 +1,27 @@
+[
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipe_modules/archives/examples/global_generator_paths.expected/monorepo_ci.json b/recipe_modules/archives/examples/global_generator_paths.expected/monorepo_ci.json
new file mode 100644
index 0000000..b0e04e1
--- /dev/null
+++ b/recipe_modules/archives/examples/global_generator_paths.expected/monorepo_ci.json
@@ -0,0 +1,27 @@
+[
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/src/../../monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipe_modules/archives/examples/global_generator_paths.expected/monorepo_try.json b/recipe_modules/archives/examples/global_generator_paths.expected/monorepo_try.json
new file mode 100644
index 0000000..b6042b6
--- /dev/null
+++ b/recipe_modules/archives/examples/global_generator_paths.expected/monorepo_try.json
@@ -0,0 +1,5 @@
+[
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipe_modules/archives/examples/global_generator_paths.expected/try.json b/recipe_modules/archives/examples/global_generator_paths.expected/try.json
new file mode 100644
index 0000000..74fb50b
--- /dev/null
+++ b/recipe_modules/archives/examples/global_generator_paths.expected/try.json
@@ -0,0 +1,27 @@
+[
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipe_modules/archives/examples/global_generator_paths.py b/recipe_modules/archives/examples/global_generator_paths.py
new file mode 100644
index 0000000..cb51250
--- /dev/null
+++ b/recipe_modules/archives/examples/global_generator_paths.py
@@ -0,0 +1,129 @@
+# Copyright 2022 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from recipe_engine.post_process import DoesNotRun, Filter, StatusFailure
+
+from RECIPE_MODULES.flutter.archives.api import ArchivePaths
+
+DEPS = [
+    'flutter/archives',
+    'flutter/monorepo',
+    'recipe_engine/assertions',
+    'recipe_engine/buildbucket',
+    'recipe_engine/path',
+    'recipe_engine/properties',
+    'recipe_engine/raw_io',
+]
+
+
+def RunSteps(api):
+  checkout = api.path['start_dir'].join('src')
+  archives = [
+      {
+        "source": "out/debug/artifacts.zip",
+        "destination": "ios/artifacts.zip"
+      },
+      {
+        "source": "out/release-nobitcode/Flutter.dSYM.zip",
+        "destination": "ios-release-nobitcode/Flutter.dSYM.zip"
+      },
+      {
+        "source": "out/release/Flutter.dSYM.zip",
+        "destination": "ios-release/Flutter.dSYM.zip"
+      }
+  ]
+  expected_results = [
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/debug/artifacts.zip')),
+          remote='gs://flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios/artifacts.zip'
+      ),
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/release-nobitcode/Flutter.dSYM.zip')),
+          remote='gs://flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios-release-nobitcode/Flutter.dSYM.zip'
+      ),
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/release/Flutter.dSYM.zip')),
+          remote='gs://flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios-release/Flutter.dSYM.zip'
+      )
+  ]
+  expected_monorepo_results = [
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/debug/artifacts.zip')),
+          remote='gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios/artifacts.zip'
+      ),
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/release-nobitcode/Flutter.dSYM.zip')),
+          remote='gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios-release-nobitcode/Flutter.dSYM.zip'
+      ),
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/release/Flutter.dSYM.zip')),
+          remote='gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios-release/Flutter.dSYM.zip'
+      )
+  ]
+  expected_try_results = [
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/debug/artifacts.zip')),
+          remote='gs://flutter_archives_v2/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios/artifacts.zip'
+      ),
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/release-nobitcode/Flutter.dSYM.zip')),
+          remote='gs://flutter_archives_v2/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios-release-nobitcode/Flutter.dSYM.zip'
+      ),
+      ArchivePaths(
+          local=str(api.path['start_dir'].join('src/out/release/Flutter.dSYM.zip')),
+          remote='gs://flutter_archives_v2/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/ios-release/Flutter.dSYM.zip'
+      )
+  ]
+  env_to_results = {
+      'production': expected_results,
+      'monorepo': expected_monorepo_results,
+      'monorepo_try': [],
+      'try': expected_try_results
+  }
+  config = api.properties.get('config')
+  results = api.archives.global_generator_paths(checkout, archives)
+  api.assertions.assertListEqual(env_to_results.get(config), results)
+
+
+def GenTests(api):
+  yield api.test(
+      'basic',
+      api.properties(config='production'),
+      api.buildbucket.ci_build(
+          project='flutter',
+          bucket='prod',
+          git_repo='https://flutter.googlesource.com/mirrors/engine',
+          git_ref='refs/heads/main'
+      ),
+      api.step_data(
+          'git rev-parse',
+          stdout=api.raw_io
+          .output_text('12345abcde12345abcde12345abcde12345abcde\n')
+      )
+  )
+  yield api.test(
+      'monorepo_ci',
+      api.properties(config='monorepo'),
+      api.monorepo.ci_build(),
+  )
+  yield api.test(
+      'monorepo_try',
+      api.properties(config='monorepo_try'),
+      api.monorepo.try_build(),
+  )
+  yield api.test(
+      'try',
+      api.properties(config='try'),
+      api.buildbucket.ci_build(
+          project='flutter',
+          bucket='try',
+          git_repo='https://flutter.googlesource.com/mirrors/engine',
+          git_ref='refs/heads/main'
+      ),
+      api.step_data(
+          'git rev-parse',
+          stdout=api.raw_io
+          .output_text('12345abcde12345abcde12345abcde12345abcde\n')
+      )
+  )
diff --git a/recipe_modules/repo_util/api.py b/recipe_modules/repo_util/api.py
index c7c0c13..28d092e 100644
--- a/recipe_modules/repo_util/api.py
+++ b/recipe_modules/repo_util/api.py
@@ -3,26 +3,30 @@
 # found in the LICENSE file.
 
 REPOS = {
-    'flutter': 'https://flutter.googlesource.com/mirrors/flutter',
-    'engine': 'https://flutter.googlesource.com/mirrors/engine',
     'cocoon': 'https://flutter.googlesource.com/mirrors/cocoon',
+    'engine': 'https://flutter.googlesource.com/mirrors/engine',
+    'flutter': 'https://flutter.googlesource.com/mirrors/flutter',
     'infra': 'https://flutter.googlesource.com/infra',
+    'mirrors/engine': 'https://flutter.googlesource.com/mirrors/engine',
+    'mirrors/flutter': 'https://flutter.googlesource.com/mirrors/flutter',
     'monorepo': 'https://dart.googlesource.com/monorepo',
+    'openpay': 'https://dash-internal.googlesource.com/openpay',
     'packages': 'https://flutter.googlesource.com/mirrors/packages',
     'plugins': 'https://flutter.googlesource.com/mirrors/plugins',
-    'openpay': 'https://dash-internal.googlesource.com/openpay',
 }
 
 # TODO(keyonghan): deprecate when all repos are migrated to main.
 REPO_BRANCHES = {
-    'flutter': 'master',
-    'engine': 'main',
     'cocoon': 'main',
+    'engine': 'main',
+    'flutter': 'master',
     'infra': 'main',
+    'mirrors/engine': 'main',
+    'mirrors/flutter': 'main',
     'monorepo': 'main',
+    'openpay': 'main',
     'packages': 'main',
     'plugins': 'main',
-    'openpay': 'main',
 }
 
 import copy
@@ -205,7 +209,7 @@
         max_attempts=4
     )
 
-  def checkout(self, name, checkout_path, url=None, ref=None):
+  def checkout(self, name, checkout_path, url=None, ref=None, override_sha=False):
     """Checks out a repo and returns sha1 of checked out revision.
 
     The supported repository names and their urls are defined in the global
@@ -216,6 +220,7 @@
       checkout_path (Path): directory to clone into.
       url (str): optional url overwrite of the remote repo.
       ref (str): optional ref overwrite to fetch and check out.
+      override_sha (bool): flag to override the commit sha and used the passed in ref.
     """
     if name not in REPOS:
       raise ValueError('Unsupported repo: %s' % name)
@@ -226,10 +231,15 @@
       # if this a release build, self.m.buildbucket.gitiles_commit.id should have more priority than
       # ref since it is more specific, and we don't want to default to refs/heads/<REPO_BRANCHES[name]>
       if ref in ['refs/heads/beta', 'refs/heads/stable']:
-        git_ref = (
-            self.m.buildbucket.gitiles_commit.id or
-            self.m.buildbucket.gitiles_commit.ref or ref
-        )
+        # When we currently perform a checkout of cocoon and flutter we get the cocoon sha from the
+        # build. We checkout that version of cocoon and then when we go to checkout flutter we end
+        # up using that sha so then the flutter checkout fails since that commit in cocoon is not in
+        # the flutter repo. This just allows us to override that and use the original ref which for
+        # the coming change is just the tot master branch.
+        git_ref = ref if override_sha else (
+              self.m.buildbucket.gitiles_commit.id or
+              self.m.buildbucket.gitiles_commit.ref or ref
+          )
       else:
         git_ref = (
             ref or self.m.buildbucket.gitiles_commit.id or
@@ -274,14 +284,6 @@
       ).stdout.strip()
       return commit
 
-  def run_flutter_doctor(self):
-    self.m.retry.step(
-        'flutter doctor',
-        ['flutter', 'doctor', '--verbose'],
-        max_attempts=3,
-        timeout=300,
-    )
-
   def get_env_ref(self):
     '''Get the ref of the current build from env.'''
     gitiles_commit = self.m.buildbucket.gitiles_commit.id
@@ -412,6 +414,40 @@
     env_prefixes = {'PATH': ['%s' % str(dart_bin)]}
     return env, env_prefixes
 
+  def monorepo_environment(self, checkout_path):
+    """Returns env and env_prefixes of a monorepo command environment."""
+    dart_bin = checkout_path.join(
+        'engine', 'src', 'third_party', 'dart', 'tools', 'sdks', 'dart-sdk', 'bin'
+    )
+    git_ref = self.m.properties.get('git_ref', '')
+    android_home = checkout_path.join('engine', 'src', 'third_party', 'android_tools', 'sdk')
+    env = {
+        # Windows Packaging script assumes this is set.
+        'DEPOT_TOOLS':
+            str(self.m.depot_tools.root),
+        'ENGINE_CHECKOUT_PATH':
+            checkout_path.join('engine'),
+        'LUCI_CI':
+            True,
+        'LUCI_PR':
+            re.sub('refs\/pull\/|\/head', '', git_ref),
+        'LUCI_BRANCH':
+            self.m.properties.get('release_ref', '').replace('refs/heads/', ''),
+        'GIT_BRANCH':
+            self.get_branch(checkout_path.join('flutter')),
+        'OS':
+            'linux' if self.m.platform.name == 'linux' else
+            ('darwin' if self.m.platform.name == 'mac' else 'win'),
+        'ANDROID_HOME':
+            str(android_home),
+        'LUCI_WORKDIR':
+            str(self.m.path['start_dir']),
+        'REVISION':
+            self.m.buildbucket.gitiles_commit.id or ''
+    }
+    env_prefixes = {'PATH': ['%s' % str(dart_bin)]}
+    return env, env_prefixes
+
   def sdk_checkout_path(self):
     """Returns the checkoout path of the current flutter_environment.
 
diff --git a/recipe_modules/repo_util/examples/full.expected/basic.json b/recipe_modules/repo_util/examples/full.expected/basic.json
index 9ff6ce2..326161e 100644
--- a/recipe_modules/repo_util/examples/full.expected/basic.json
+++ b/recipe_modules/repo_util/examples/full.expected/basic.json
@@ -651,15 +651,6 @@
     ]
   },
   {
-    "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
     "cmd": [],
     "name": "Identify branches (4)"
   },
@@ -701,7 +692,7 @@
       "rev-parse",
       "HEAD"
     ],
-    "cwd": "[START_DIR]/flutter",
+    "cwd": "[START_DIR]/flutter/flutter",
     "infra_step": true,
     "name": "Identify branches (5).git rev-parse",
     "~followup_annotations": [
@@ -716,7 +707,7 @@
       "--contains",
       "12345abcde12345abcde12345abcde12345abcde"
     ],
-    "cwd": "[START_DIR]/flutter",
+    "cwd": "[START_DIR]/flutter/flutter",
     "infra_step": true,
     "name": "Identify branches (5).git branch",
     "~followup_annotations": [
@@ -724,16 +715,6 @@
     ]
   },
   {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[START_DIR]/flutter",
-    "infra_step": true,
-    "name": "git rev-parse"
-  },
-  {
     "cmd": [],
     "name": "Identify branches (6)"
   },
@@ -767,6 +748,48 @@
   },
   {
     "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/flutter",
+    "infra_step": true,
+    "name": "git rev-parse"
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches (7)"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/flutter",
+    "infra_step": true,
+    "name": "Identify branches (7).git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[START_DIR]/flutter",
+    "infra_step": true,
+    "name": "Identify branches (7).git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
       "vpython3",
       "-u",
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
diff --git a/recipe_modules/repo_util/examples/full.expected/bot_update.json b/recipe_modules/repo_util/examples/full.expected/bot_update.json
index 3cefdd9..c1caf80 100644
--- a/recipe_modules/repo_util/examples/full.expected/bot_update.json
+++ b/recipe_modules/repo_util/examples/full.expected/bot_update.json
@@ -620,15 +620,6 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
-    "cmd": [
       "git",
       "rev-parse",
       "HEAD"
diff --git a/recipe_modules/repo_util/examples/full.expected/failed_flutter_environment.json b/recipe_modules/repo_util/examples/full.expected/failed_flutter_environment.json
index af3deec..0aaa006 100644
--- a/recipe_modules/repo_util/examples/full.expected/failed_flutter_environment.json
+++ b/recipe_modules/repo_util/examples/full.expected/failed_flutter_environment.json
@@ -619,15 +619,6 @@
     ]
   },
   {
-    "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
     "cmd": [],
     "name": "Flutter Environment",
     "~followup_annotations": [
diff --git a/recipe_modules/repo_util/examples/full.expected/first_bot_update_failed.json b/recipe_modules/repo_util/examples/full.expected/first_bot_update_failed.json
index 7cf482f..8776efd 100644
--- a/recipe_modules/repo_util/examples/full.expected/first_bot_update_failed.json
+++ b/recipe_modules/repo_util/examples/full.expected/first_bot_update_failed.json
@@ -620,15 +620,6 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
-    "cmd": [
       "git",
       "rev-parse",
       "HEAD"
diff --git a/recipe_modules/repo_util/examples/full.expected/first_bot_update_revision_not_found.json b/recipe_modules/repo_util/examples/full.expected/first_bot_update_revision_not_found.json
index 68d43a7..2a71f98 100644
--- a/recipe_modules/repo_util/examples/full.expected/first_bot_update_revision_not_found.json
+++ b/recipe_modules/repo_util/examples/full.expected/first_bot_update_revision_not_found.json
@@ -620,15 +620,6 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
-    "cmd": [
       "git",
       "rev-parse",
       "HEAD"
diff --git a/recipe_modules/repo_util/examples/full.expected/monorepo.json b/recipe_modules/repo_util/examples/full.expected/monorepo.json
index 63193e3..12c487b 100644
--- a/recipe_modules/repo_util/examples/full.expected/monorepo.json
+++ b/recipe_modules/repo_util/examples/full.expected/monorepo.json
@@ -1087,27 +1087,6 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
-    "cmd": [
       "git",
       "rev-parse",
       "HEAD"
diff --git a/recipe_modules/repo_util/examples/full.expected/monorepo_first_bot_update_failed.json b/recipe_modules/repo_util/examples/full.expected/monorepo_first_bot_update_failed.json
index 238590c..6d0fb06 100644
--- a/recipe_modules/repo_util/examples/full.expected/monorepo_first_bot_update_failed.json
+++ b/recipe_modules/repo_util/examples/full.expected/monorepo_first_bot_update_failed.json
@@ -1087,27 +1087,6 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
-    "cmd": [
       "git",
       "rev-parse",
       "HEAD"
diff --git a/recipe_modules/repo_util/examples/full.expected/monorepo_release.json b/recipe_modules/repo_util/examples/full.expected/monorepo_release.json
index fcdb0db..20d0ee1 100644
--- a/recipe_modules/repo_util/examples/full.expected/monorepo_release.json
+++ b/recipe_modules/repo_util/examples/full.expected/monorepo_release.json
@@ -1142,27 +1142,6 @@
     ]
   },
   {
-    "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
     "cmd": [],
     "name": "Identify branches (4)"
   },
@@ -1228,7 +1207,7 @@
       "rev-parse",
       "HEAD"
     ],
-    "cwd": "[START_DIR]/flutter",
+    "cwd": "[START_DIR]/flutter/flutter",
     "infra_step": true,
     "luci_context": {
       "realm": {
@@ -1255,7 +1234,7 @@
       "--contains",
       "12345abcde12345abcde12345abcde12345abcde"
     ],
-    "cwd": "[START_DIR]/flutter",
+    "cwd": "[START_DIR]/flutter/flutter",
     "infra_step": true,
     "luci_context": {
       "realm": {
@@ -1275,28 +1254,6 @@
     ]
   },
   {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[START_DIR]/flutter",
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "git rev-parse"
-  },
-  {
     "cmd": [],
     "name": "Identify branches (6)"
   },
@@ -1354,6 +1311,84 @@
   },
   {
     "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches (7)"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (7).git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[START_DIR]/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (7).git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
       "vpython3",
       "-u",
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
diff --git a/recipe_modules/repo_util/examples/full.expected/monorepo_tryjob.json b/recipe_modules/repo_util/examples/full.expected/monorepo_tryjob.json
index 2598caa..7e7f970 100644
--- a/recipe_modules/repo_util/examples/full.expected/monorepo_tryjob.json
+++ b/recipe_modules/repo_util/examples/full.expected/monorepo_tryjob.json
@@ -1088,27 +1088,6 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
-    "cmd": [
       "git",
       "rev-parse",
       "HEAD"
diff --git a/recipe_modules/repo_util/examples/full.expected/monorepo_wrong_host.json b/recipe_modules/repo_util/examples/full.expected/monorepo_wrong_host.json
index b564bd8..433d071 100644
--- a/recipe_modules/repo_util/examples/full.expected/monorepo_wrong_host.json
+++ b/recipe_modules/repo_util/examples/full.expected/monorepo_wrong_host.json
@@ -1087,27 +1087,6 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "flutter doctor",
-    "timeout": 300
-  },
-  {
-    "cmd": [
       "git",
       "rev-parse",
       "HEAD"
@@ -1165,7 +1144,7 @@
       "Traceback (most recent call last):",
       "  File \"RECIPE_REPO[flutter]/recipe_modules/repo_util/examples/full.py\", line 48, in RunSteps",
       "    api.repo_util.monorepo_checkout(checkout_path, {}, {})",
-      "  File \"RECIPE_REPO[flutter]/recipe_modules/repo_util/api.py\", line 147, in monorepo_checkout",
+      "  File \"RECIPE_REPO[flutter]/recipe_modules/repo_util/api.py\", line 151, in monorepo_checkout",
       "    raise ValueError(",
       "ValueError('Input reference is not on dart.googlesource.com/monorepo')"
     ]
diff --git a/recipe_modules/repo_util/examples/full.py b/recipe_modules/repo_util/examples/full.py
index d996e3f..db22437 100644
--- a/recipe_modules/repo_util/examples/full.py
+++ b/recipe_modules/repo_util/examples/full.py
@@ -36,10 +36,10 @@
   api.repo_util.checkout(
       'flutter', flutter_checkout_path, ref='refs/heads/beta'
   )
-  api.repo_util.run_flutter_doctor()
   api.repo_util.get_env_ref()
 
   env, env_paths = api.repo_util.engine_environment(flutter_checkout_path)
+  env, env_paths = api.repo_util.monorepo_environment(flutter_checkout_path)
   env, env_paths = api.repo_util.flutter_environment(flutter_checkout_path)
   api.repo_util.in_release_and_main(flutter_checkout_path)
   checkout_path = api.path['start_dir']
diff --git a/recipe_modules/repo_util/examples/unsupported.expected/unsupported.json b/recipe_modules/repo_util/examples/unsupported.expected/unsupported.json
index 013eefd..c312914 100644
--- a/recipe_modules/repo_util/examples/unsupported.expected/unsupported.json
+++ b/recipe_modules/repo_util/examples/unsupported.expected/unsupported.json
@@ -9,7 +9,7 @@
       "Traceback (most recent call last):",
       "  File \"RECIPE_REPO[flutter]/recipe_modules/repo_util/examples/unsupported.py\", line 13, in RunSteps",
       "    api.repo_util.checkout('unsupported_repo', repo_dir)",
-      "  File \"RECIPE_REPO[flutter]/recipe_modules/repo_util/api.py\", line 221, in checkout",
+      "  File \"RECIPE_REPO[flutter]/recipe_modules/repo_util/api.py\", line 226, in checkout",
       "    raise ValueError('Unsupported repo: %s' % name)",
       "ValueError('Unsupported repo: unsupported_repo')"
     ]
diff --git a/recipe_modules/retry/api.py b/recipe_modules/retry/api.py
index b7658d7..044b466 100644
--- a/recipe_modules/retry/api.py
+++ b/recipe_modules/retry/api.py
@@ -73,17 +73,19 @@
         sleep (int or float): The initial time to sleep between attempts.
         backoff_factor (int or float): The factor by which the sleep time
             will be multiplied after each attempt.
+    Returns:
+      The result of executing func.
     """
     for attempt in range(max_attempts):
       try:
-        func()
+        result = func()
         # Append an extra step to reflect test flakiness, so that we can easily
         # collect flaky test statistics. This can also be used to trigger
         # notification when a flake happens.
         # This is mainly used for Engine builders for now.
         if attempt > 0 and step_name is not None and 'test:' in step_name:
           self.m.test_utils.flaky_step(step_name)
-        return
+        return result
       except self.m.step.StepFailure:
         step = self.m.step.active_result
         retriable_failure = retriable_codes == 'any' or \
@@ -110,13 +112,23 @@
           sleep (int or float): The initial time to sleep between attempts.
           backoff_factor (int or float): The factor by which the sleep time
               will be multiplied after each attempt.
+      Returns:
+        The result of executing func.
       """
       for attempt in range(max_attempts):
         try:
-          func()
-          return
+          result = func()
+          return result
         except self.m.step.StepFailure:
           if attempt == max_attempts - 1:
             raise
           self.m.time.sleep(sleep)
           sleep *= backoff_factor
+
+  def run_flutter_doctor(self):
+    self.step(
+        'flutter doctor',
+        ['flutter', 'doctor', '--verbose'],
+        max_attempts=3,
+        timeout=300,
+    )
diff --git a/recipe_modules/retry/examples/full.expected/pass_with_retries.json b/recipe_modules/retry/examples/full.expected/pass_with_retries.json
index 26dd816..c312a99 100644
--- a/recipe_modules/retry/examples/full.expected/pass_with_retries.json
+++ b/recipe_modules/retry/examples/full.expected/pass_with_retries.json
@@ -84,6 +84,15 @@
     "name": "test: mytest_func_basic (2)"
   },
   {
+    "cmd": [
+      "flutter",
+      "doctor",
+      "--verbose"
+    ],
+    "name": "flutter doctor",
+    "timeout": 300
+  },
+  {
     "name": "$result"
   }
 ]
\ No newline at end of file
diff --git a/recipe_modules/retry/examples/full.expected/passing.json b/recipe_modules/retry/examples/full.expected/passing.json
index 9692ca4..6cd5472 100644
--- a/recipe_modules/retry/examples/full.expected/passing.json
+++ b/recipe_modules/retry/examples/full.expected/passing.json
@@ -41,6 +41,15 @@
     "name": "test: mytest_func_basic"
   },
   {
+    "cmd": [
+      "flutter",
+      "doctor",
+      "--verbose"
+    ],
+    "name": "flutter doctor",
+    "timeout": 300
+  },
+  {
     "name": "$result"
   }
 ]
\ No newline at end of file
diff --git a/recipe_modules/retry/examples/full.py b/recipe_modules/retry/examples/full.py
index 589569e..6125225 100644
--- a/recipe_modules/retry/examples/full.py
+++ b/recipe_modules/retry/examples/full.py
@@ -43,6 +43,7 @@
 
   api.retry.wrap(func1, step_name='test: mytest_func', max_attempts=max_attempts)
   api.retry.basic_wrap(func2, max_attempts=max_attempts)
+  api.retry.run_flutter_doctor()
 
 
 def GenTests(api):
@@ -70,3 +71,4 @@
   ) + api.step_data(
       'test: mytest_func_basic', retcode=1
   )
+
diff --git a/recipe_modules/shard_util_v2/__init__.py b/recipe_modules/shard_util_v2/__init__.py
index 1218035..8dbd479 100644
--- a/recipe_modules/shard_util_v2/__init__.py
+++ b/recipe_modules/shard_util_v2/__init__.py
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 DEPS = [
+    'flutter/retry',
     'fuchsia/cas_util',
     'recipe_engine/buildbucket',
     'recipe_engine/cas',
diff --git a/recipe_modules/shard_util_v2/api.py b/recipe_modules/shard_util_v2/api.py
index 03d97d9..446d48e 100644
--- a/recipe_modules/shard_util_v2/api.py
+++ b/recipe_modules/shard_util_v2/api.py
@@ -1,31 +1,25 @@
 # Copyright 2021 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
-
 import attr
 import json
 import collections
-
 from google.protobuf import duration_pb2
 from recipe_engine import recipe_api
 from recipe_engine import engine_types
 from PB.go.chromium.org.luci.buildbucket.proto import common as common_pb2
 from PB.go.chromium.org.luci.buildbucket.proto import build as build_pb2
 from RECIPE_MODULES.fuchsia.utils import pluralize
-
 DRONE_TIMEOUT_SECS = 3600 * 3  # 3 hours.
-
 # Builder names use full platform name instead of short names. We need to
 # map short names to full platform names to be able to identify the drone
 # used to run the subshards.
 PLATFORM_TO_NAME = {'win': 'Windows', 'linux': 'Linux', 'mac': 'Mac'}
-
 # Internal properties that should be set for builds running on BuildBucket.
 PROPERTIES_TO_REMOVE = [
     '$recipe_engine/buildbucket', '$recipe_engine/runtime.is_experimental',
     'buildername', '$recipe_engine/runtime', 'is_experimental'
 ]
-
 # Environments map to calculate the environment from the bucket.
 ENVIRONMENTS_MAP = {
     'try': '',
@@ -33,8 +27,6 @@
     'flutter': 'Production ',
     'prod': 'Production '
 }
-
-
 @attr.s
 class SubbuildResult(object):
   """Subbuild result metadata."""
@@ -45,20 +37,15 @@
   build_name = attr.ib(type=str)
   url = attr.ib(type=str, default=None)
   build_proto = attr.ib(type=build_pb2.Build, default=None)
-
-
 class ShardUtilApi(recipe_api.RecipeApi):
   """Utilities to shard tasks."""
-
   def unfreeze_dict(self, dictionary):
     """Creates a mutable dictionary out of a FrozenDict.
-
     FrozenDict example:
-      FrozenDict([('dependency', 'open_jdk'), ('version', 'version:1.8.0u202-b08')])
+      FrozenDict([('dependency', 'open_jdk'), ('version', 'version:11')])
     , which is not a default python type.
-
     This refactors it to regular dict:
-      {'dependency': 'open_jdk', 'version': 'version:1.8.0u202-b08'}
+      {'dependency': 'open_jdk', 'version': 'version:11'}
     """
     result = collections.OrderedDict()
     for k, v in sorted(dictionary.items()):
@@ -72,41 +59,37 @@
       else:
         result[k] = v
     return result
-
   def pre_process_properties(self, target):
     """Converts json properties to dicts or lists.
-
-    Dict or lists in ci_yaml are passed as json string to recipes and they
-    need to be converted back to dict or lists before passing them to subbuilds.
-
-    Args:
-      target: A target dictionary as read from the yaml file.
-    """
+   Dict or lists in ci_yaml are passed as json string to recipes and they
+   need to be converted back to dict or lists before passing them to subbuilds.
+   Args:
+     target: A target dictionary as read from the yaml file.
+   Returns:
+     A copy of the original dictionary with the json properties decoded.
+   """
     if target.get('properties'):
       properties = target.get('properties')
       new_props = {}
       for k, v in properties.items():
         if isinstance(v,str) and (v.startswith('[') or v.startswith('{')):
           new_props[k] = json.loads(v)
+        else:
+          new_props[k] = v
       target['properties'] = new_props
     return target
-
   def struct_to_dict(self, struct):
     """Transforms a proto structure to a dictionary.
-
     Args:
       struct: A proto structure.
     Returns:
       A dictionary representation of the proto structure.
-
     This is because the proto structures can not be passed to the BuildBucket or led
     requests.
     """
     return collections.OrderedDict((k, v) for k, v in struct.items())
-
   def schedule_builds(self, builds, presentation, branch='main'):
     """Schedule builds using the builds configurations.
-
     Args:
       builds(dict): The build configurations to be passed to BuildBucket or led.
       presentation(StepPresentation): The step object used to add links and/or logs.
@@ -114,12 +97,16 @@
     Returns:
       A dictionary with a long build_id as key and SubbuildResult as value.
     """
-    return self.schedule(builds, 'engine_v2/builder', presentation,
+    # Update build with default recipe.
+    updated_builds = []
+    for b in builds:
+      build = self.unfreeze_dict(b)
+      build['recipe'] = build.get('recipe') or 'engine_v2/builder'
+      updated_builds.append(build)
+    return self.schedule(updated_builds, presentation,
                          branch=branch)
-
   def schedule_tests(self, tests, build_results, presentation):
     """Schedule tests using build_results for dependencies.
-
     Args:
       tests(dict): The test configurations to be passed to BuildBucket or led.
       build_results: A dictionary with a long build_id as key and SubbuildResult as value.
@@ -134,20 +121,18 @@
     for t in tests:
       test = self.unfreeze_dict(t)
       test['resolved_deps'] = []
+      test['recipe'] = test.get('recipe') or 'engine_v2/tester'
       for dep in test.get('dependencies', []):
         dep_dict = self.struct_to_dict(
             results_map[dep].build_proto.output.properties['cas_output_hash']
         )
         test['resolved_deps'].append(dep_dict)
       updated_tests.append(test)
-    return self.schedule(updated_tests, 'engine_v2/tester', presentation)
-
-  def schedule(self, builds, recipe_name, presentation, branch='main'):
+    return self.schedule(updated_tests, presentation)
+  def schedule(self, builds, presentation, branch='main'):
     """Schedules one subbuild per build configuration.
-
     Args:
       builds(dict): The build/test configurations to be passed to BuildBucket or led.
-      recipe_name(str): A string with the recipe name to use.
       presentation(StepPresentation): The step object used to add links and/or logs.
       branch(String): The current branch name.
     Returns:
@@ -155,17 +140,14 @@
     """
     build_list = [self.unfreeze_dict(b) for b in builds]
     if self.m.led.launched_by_led:
-      builds = self._schedule_with_led(build_list, recipe_name)
+      builds = self._schedule_with_led(build_list)
     else:
-      builds = self._schedule_with_bb(build_list, recipe_name, branch=branch)
+      builds = self._schedule_with_bb(build_list, branch=branch)
     return builds
-
-  def _schedule_with_led(self, builds, recipe_name):
+  def _schedule_with_led(self, builds):
     """Schedules one subbuild per build using led.
-
     Args:
       builds(dict): The build/test configurations to be passed to BuildBucket or led.
-      recipe_name(str): A string with the recipe name to use.
     Returns:
       A dictionary with a long build_id as key and SubbuildResult as value.
     """
@@ -185,13 +167,13 @@
       drone_properties.pop('builds', None)
       # Copy parent bot dimensions.
       drone_dimensions = build.get('drone_dimensions', [])
-      task_dimensions = []
+      # ci.yaml provided dimensions.
+      ci_yaml_dimensions = build.get('dimensions', {})
       platform_name = build.get('platform') or PLATFORM_TO_NAME.get(
           self.m.platform.name
       )
-
       # Override recipe.
-      drone_properties['recipe'] = recipe_name
+      drone_properties['recipe'] = build['recipe']
       bucket = self.m.buildbucket.build.builder.bucket
       environment = ENVIRONMENTS_MAP.get(bucket, '')
       builder_name = build.get(
@@ -208,20 +190,22 @@
       )
       edit_args = []
       for k, v in sorted(drone_properties.items()):
-        edit_args.extend(["-p", "%s=%s" % (k, self.m.json.dumps(v))])
+        edit_args.extend(['-p', '%s=%s' % (k, self.m.json.dumps(v))])
       # led reduces the priority of tasks by 10 from their values in
       # buildbucket which we do not want.
       # TODO(crbug.com/1138533) Add an option to led to handle this.
       led_data.result.buildbucket.bbagent_args.build.infra.swarming.priority -= 20
-      led_data = led_data.then("edit", *edit_args)
-      led_data = led_data.then("edit", "-name", task_name)
-      led_data = led_data.then("edit", "-r", recipe_name)
+      led_data = led_data.then('edit', *edit_args)
+      led_data = led_data.then('edit', '-name', task_name)
+      led_data = led_data.then('edit', '-r', build['recipe'])
       for d in drone_dimensions:
-        led_data = led_data.then("edit", "-d", d)
+        led_data = led_data.then('edit', '-d', d)
+      for k,v in ci_yaml_dimensions.items():
+        led_data = led_data.then('edit', "-d", '%s=%s' % (k,v))
       led_data = self.m.led.inject_input_recipes(led_data)
-      launch_res = led_data.then("launch", "-modernize")
+      launch_res = led_data.then('launch', '-modernize')
       task_id = launch_res.launch_result.task_id
-      build_url = "https://ci.chromium.org/swarming/task/%s?server=%s" % (
+      build_url = 'https://ci.chromium.org/swarming/task/%s?server=%s' % (
           task_id,
           launch_res.launch_result.swarming_hostname,
       )
@@ -232,13 +216,10 @@
           build_name=task_name
       )
     return results
-
-  def _schedule_with_bb(self, builds, recipe_name, branch='main'):
+  def _schedule_with_bb(self, builds, branch='main'):
     """Schedules builds using builbbucket.
-
     Args:
       builds(dict): The build/test configurations to be passed to BuildBucket or led.
-      recipe_name(str): A string with the recipe name to use.
       branch(String): The current branch name.
     Returns:
       A dictionary with a long build_id as key and SubbuildResult as value.
@@ -256,6 +237,8 @@
       drone_properties['gclient_variables'] = build.get('gclient_variables', {})
       # Copy parent bot dimensions.
       drone_dimensions = build.get('drone_dimensions', [])
+      # ci.yaml provided dimensions.
+      ci_yaml_dimensions = build.get('dimensions', {})
       task_dimensions = []
       platform_name = build.get('platform') or PLATFORM_TO_NAME.get(
           self.m.platform.name
@@ -273,8 +256,10 @@
       for d in drone_dimensions:
         k, v = d.split('=')
         task_dimensions.append(common_pb2.RequestedDimension(key=k, value=v))
+      for k,v in ci_yaml_dimensions.items():
+        task_dimensions.append(common_pb2.RequestedDimension(key=k, value=v))
       # Override recipe.
-      drone_properties['recipe'] = recipe_name
+      drone_properties['recipe'] = build['recipe']
       properties = collections.OrderedDict(
           (key, val)
           for key, val in sorted(drone_properties.items())
@@ -294,7 +279,10 @@
           # Increasing priority won't fix the problem but will make the deadlock
           # situation less unlikely.
           # https://github.com/flutter/flutter/issues/59169.
-          priority=25,
+          #
+          # Set priority to be same of main build temporily to help triage
+          # https://github.com/flutter/flutter/issues/124155
+          priority=30,
           exe_cipd_version=self.m.properties.get('exe_cipd_version',
                                                  'refs/heads/%s' % branch)
       )
@@ -314,15 +302,12 @@
           build_name=task_name
       )
     return results
-
   def collect(self, tasks, presentation):
     """Collects builds for the provided tasks.
-
     Args:
       tasks (dict(int, SubbuildResult)): A dictionary with the subbuild
         results and the build id as key.
       presentation (StepPresentation): The presentation to add logs to.
-
     Returns:
       A map from build IDs to the corresponding SubbuildResult.
     """
@@ -331,15 +316,12 @@
     else:
       builds = self._collect_from_bb(tasks)
     return builds
-
   def _collect_from_led(self, tasks, presentation):
     """Waits for a list of builds to complete.
-
     Args:
       tasks (dict(int, SubbuildResult)): A dictionary with the subbuild
         results and the build id as key.
       presentation(StepPresentation): Used to add logs and logs to UI.
-
     Returns:
       A map from build IDs to the corresponding SubbuildResult.
     """
@@ -364,14 +346,11 @@
                                          build_proto.infra.swarming.task_id)
       )
     return builds
-
   def _collect_from_bb(self, tasks):
     """Collects builds from build bucket services using the provided tasks.
-
     Args:
       tasks (dict(int, SubbuildResult)): A dictionary with the subbuild
         results and the build id as key.
-
     Returns: A list of SubBuildResult, one per task.
     """
     build_ids = [build.build_id for build in tasks.values()]
@@ -399,7 +378,6 @@
       task_ids = [b.infra.swarming.task_id for b in failed_builds]
       # Make sure task IDs are non-empty.
       assert all(task_ids), task_ids
-
       # Wait for the underlying Swarming tasks to complete. The Swarming
       # task for a Buildbucket build can take significantly longer to
       # complete than the build itself due to post-processing outside the
@@ -436,14 +414,11 @@
           url=self.m.buildbucket.build_url(build_id=build_id)
       )
     return builds
-
   def download_full_builds(self, build_results, out_build_paths):
     """Downloads intermediate builds from CAS.
-
     Args:
       build_results (dict(int, SubbuildResult)): A dictionary with the subbuild
         result and the build id as key.
-
     Mac and fuchsia use artifacts from different sub-builds to generate the final artifacts.
     Calls to this API will happen most likely after all the subbuilds have been completed and
     only if global generators will be executed.
@@ -459,18 +434,24 @@
               cas_out_dict['full_build'],
               out_build_paths
           )
-
   def archive_full_build(self, build_dir, target):
     """Archives a full build in cas.
-
     Args:
       build_dir: The path to the build output folder.
       target(str): The name of the build we are archiving.
-
     Returns:
       A string with the hash of the cas archive.
     """
     cas_dir = self.m.path.mkdtemp('out-cas-directory')
     cas_engine = cas_dir.join(target)
     self.m.file.copytree('Copy host_debug_unopt', build_dir, cas_engine)
-    return self.m.cas_util.upload(cas_dir, step_name='Archive full build for %s' % target)
+    def _upload():
+      return self.m.cas_util.upload(cas_dir, step_name='Archive full build for %s' % target)
+    # Windows CAS upload is flaky, hashes are calculated before files are fully synced to disk.
+    return self.m.retry.basic_wrap(
+        _upload,
+        step_name='Archive full build',
+        sleep=10.0,
+        backoff_factor=5,
+        max_attempts=3
+    )
diff --git a/recipe_modules/shard_util_v2/examples/full.expected/presubmit_bb.json b/recipe_modules/shard_util_v2/examples/full.expected/presubmit_bb.json
index fa3094e..308f6b9 100644
--- a/recipe_modules/shard_util_v2/examples/full.expected/presubmit_bb.json
+++ b/recipe_modules/shard_util_v2/examples/full.expected/presubmit_bb.json
@@ -24,7 +24,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"custom drone builder-try\", \"project\": \"fuchsia\"}, \"dimensions\": [{\"key\": \"dimension1\", \"value\": \"abc\"}], \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"executionTimeout\": \"7200s\", \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"fuchsia-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"fuchsia\"}], \"priority\": 25, \"properties\": {\"build\": {\"drone_builder_name\": \"custom drone builder\", \"drone_dimensions\": [\"dimension1=abc\"], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}}, \"builder_name_suffix\": \"-try\", \"environment\": \"Staging\", \"gclient_variables\": {}, \"git_ref\": \"refs/123/master\", \"git_url\": \"http://abc\", \"no_goma\": \"true\", \"recipe\": \"engine_v2/builder\", \"task_name\": \"mytask\", \"tests\": [{\"dependencies\": [\"ios_debug\"], \"name\": \"felt_test\", \"parameters\": [\"test\"], \"scripts\": [\"out/script.sh\"]}]}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"custom drone builder-try\", \"project\": \"fuchsia\"}, \"dimensions\": [{\"key\": \"dimension1\", \"value\": \"abc\"}, {\"key\": \"cpu\", \"value\": \"arm64\"}], \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"executionTimeout\": \"7200s\", \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"fuchsia-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"fuchsia\"}], \"priority\": 30, \"properties\": {\"build\": {\"dimensions\": {\"cpu\": \"arm64\"}, \"drone_builder_name\": \"custom drone builder\", \"drone_dimensions\": [\"dimension1=abc\"], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}, \"recipe\": \"engine_v2/builder\"}, \"builder_name_suffix\": \"-try\", \"environment\": \"Staging\", \"gclient_variables\": {}, \"git_ref\": \"refs/123/master\", \"git_url\": \"http://abc\", \"no_goma\": \"true\", \"recipe\": \"engine_v2/builder\", \"task_name\": \"mytask\", \"tests\": [{\"dependencies\": [\"ios_debug\"], \"name\": \"felt_test\", \"parameters\": [\"test\"], \"scripts\": [\"out/script.sh\"]}]}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -55,6 +55,10 @@
       "@@@STEP_LOG_LINE@request@          {@@@",
       "@@@STEP_LOG_LINE@request@            \"key\": \"dimension1\", @@@",
       "@@@STEP_LOG_LINE@request@            \"value\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"cpu\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"arm64\"@@@",
       "@@@STEP_LOG_LINE@request@          }@@@",
       "@@@STEP_LOG_LINE@request@        ], @@@",
       "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
@@ -74,9 +78,12 @@
       "@@@STEP_LOG_LINE@request@            \"project\": \"fuchsia\"@@@",
       "@@@STEP_LOG_LINE@request@          }@@@",
       "@@@STEP_LOG_LINE@request@        ], @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"dimensions\": {@@@",
+      "@@@STEP_LOG_LINE@request@              \"cpu\": \"arm64\"@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
       "@@@STEP_LOG_LINE@request@            \"drone_builder_name\": \"custom drone builder\", @@@",
       "@@@STEP_LOG_LINE@request@            \"drone_dimensions\": [@@@",
       "@@@STEP_LOG_LINE@request@              \"dimension1=abc\"@@@",
@@ -94,7 +101,8 @@
       "@@@STEP_LOG_LINE@request@            \"ninja\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"config\": \"ios_debug\", @@@",
       "@@@STEP_LOG_LINE@request@              \"targets\": []@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"builder_name_suffix\": \"-try\", @@@",
       "@@@STEP_LOG_LINE@request@          \"environment\": \"Staging\", @@@",
diff --git a/recipe_modules/shard_util_v2/examples/full.expected/presubmit_led.json b/recipe_modules/shard_util_v2/examples/full.expected/presubmit_led.json
index 87e6f8b..de75b83 100644
--- a/recipe_modules/shard_util_v2/examples/full.expected/presubmit_led.json
+++ b/recipe_modules/shard_util_v2/examples/full.expected/presubmit_led.json
@@ -50,7 +50,7 @@
       "-p",
       "$recipe_engine/led={\"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", \"rbe_cas_input\": {\"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", \"digest\": {\"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", \"size_bytes\": 91}}}",
       "-p",
-      "build={\"drone_builder_name\": \"custom drone builder\", \"drone_dimensions\": [\"dimension1=abc\"], \"gn\": [], \"name\": \"ios_debug\", \"ninja\": [\"ios_debug\"]}",
+      "build={\"dimensions\": {\"cpu\": \"arm64\"}, \"drone_builder_name\": \"custom drone builder\", \"drone_dimensions\": [\"dimension1=abc\"], \"gn\": [], \"name\": \"ios_debug\", \"ninja\": [\"ios_debug\"], \"recipe\": \"engine_v2/builder\"}",
       "-p",
       "builder_name_suffix=\"-try\"",
       "-p",
@@ -154,6 +154,9 @@
       "@@@STEP_LOG_LINE@proto.output@              }@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"dimensions\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cpu\": \"arm64\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              },@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_builder_name\": \"custom drone builder\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
@@ -162,7 +165,8 @@
       "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
-      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"builder_name_suffix\": \"-try\",@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"environment\": \"Staging\",@@@",
@@ -214,7 +218,7 @@
       }
     },
     "name": "launch builds.led edit (2)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dimensions\": {\n                \"cpu\": \"arm64\"\n              },\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ],\n              \"recipe\": \"engine_v2/builder\"\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -287,6 +291,9 @@
       "@@@STEP_LOG_LINE@proto.output@              }@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"dimensions\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cpu\": \"arm64\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              },@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_builder_name\": \"custom drone builder\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
@@ -295,7 +302,8 @@
       "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
-      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"builder_name_suffix\": \"-try\",@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"environment\": \"Staging\",@@@",
@@ -348,7 +356,7 @@
       }
     },
     "name": "launch builds.led edit (3)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dimensions\": {\n                \"cpu\": \"arm64\"\n              },\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ],\n              \"recipe\": \"engine_v2/builder\"\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -421,6 +429,9 @@
       "@@@STEP_LOG_LINE@proto.output@              }@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"dimensions\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cpu\": \"arm64\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              },@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_builder_name\": \"custom drone builder\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
@@ -429,7 +440,8 @@
       "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
-      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"builder_name_suffix\": \"-try\",@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"environment\": \"Staging\",@@@",
@@ -482,7 +494,7 @@
       }
     },
     "name": "launch builds.led edit (4)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dimensions\": {\n                \"cpu\": \"arm64\"\n              },\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ],\n              \"recipe\": \"engine_v2/builder\"\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -555,6 +567,9 @@
       "@@@STEP_LOG_LINE@proto.output@              }@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"dimensions\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cpu\": \"arm64\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              },@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_builder_name\": \"custom drone builder\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
@@ -563,7 +578,146 @@
       "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
-      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            },@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"builder_name_suffix\": \"-try\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"environment\": \"Staging\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"gclient_variables\": {},@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_ref\": \"refs/123/master\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_url\": \"http://abc\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"recipe\": \"engine_v2/builder\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_name\": \"ios_debug\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"tests\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"name\": \"felt_test\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"parameters\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"test\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"scripts\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"out/script.sh\"@@@",
+      "@@@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_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    },@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"name\": \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "led",
+      "edit",
+      "-d",
+      "cpu=arm64"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "launch builds.led edit (5)",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dimensions\": {\n                \"cpu\": \"arm64\"\n              },\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ],\n              \"recipe\": \"engine_v2/builder\"\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@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\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"custom drone builder-try\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        },@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"priority\": -20@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        },@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"builder\": \"try-builder\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                },@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createdBy\": \"project:proj\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"id\": \"8945511751514863184\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"invocation\": \"invocations/build:8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  },@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"priority\": 30.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                },@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"host\": \"github.com\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"project\": \"repo/a\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"host\": \"github.com\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"project\": \"repo/a\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                },@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"number\": 123.0,@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"value\": \"false\"@@@",
+      "@@@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@            \"$recipe_engine/led\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"rbe_cas_input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"size_bytes\": 91.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            },@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"dimensions\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cpu\": \"arm64\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              },@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"drone_builder_name\": \"custom drone builder\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"gn\": [],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"builder_name_suffix\": \"-try\",@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"environment\": \"Staging\",@@@",
@@ -615,8 +769,8 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "launch builds.led edit (5)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
+    "name": "launch builds.led edit (6)",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dimensions\": {\n                \"cpu\": \"arm64\"\n              },\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ],\n              \"recipe\": \"engine_v2/builder\"\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -708,6 +862,9 @@
       "@@@STEP_LOG_LINE@proto.output@              }@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"dimensions\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cpu\": \"arm64\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              },@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_builder_name\": \"custom drone builder\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
@@ -716,7 +873,8 @@
       "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
-      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@proto.output@            },@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"builder_name_suffix\": \"-try\",@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"environment\": \"Staging\",@@@",
@@ -768,7 +926,7 @@
       }
     },
     "name": "launch builds.led launch",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"buildbucket\": {\n            \"agent\": {\n              \"input\": {\n                \"data\": {\n                  \"kitchen-checkout\": {\n                    \"cas\": {\n                      \"digest\": {\n                        \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                        \"size_bytes\": \"91\"\n                      }\n                    }\n                  }\n                }\n              },\n              \"purposes\": {\n                \"kitchen-checkout\": \"PURPOSE_EXE_PAYLOAD\"\n              }\n            }\n          },\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"custom drone builder-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"buildbucket\": {\n            \"agent\": {\n              \"input\": {\n                \"data\": {\n                  \"kitchen-checkout\": {\n                    \"cas\": {\n                      \"digest\": {\n                        \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                        \"size_bytes\": \"91\"\n                      }\n                    }\n                  }\n                }\n              },\n              \"purposes\": {\n                \"kitchen-checkout\": \"PURPOSE_EXE_PAYLOAD\"\n              }\n            }\n          },\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dimensions\": {\n                \"cpu\": \"arm64\"\n              },\n              \"drone_builder_name\": \"custom drone builder\",\n              \"drone_dimensions\": [\n                \"dimension1=abc\"\n              ],\n              \"gn\": [],\n              \"name\": \"ios_debug\",\n              \"ninja\": [\n                \"ios_debug\"\n              ],\n              \"recipe\": \"engine_v2/builder\"\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/builder\",\n            \"task_name\": \"ios_debug\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"ios_debug\"\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -1358,7 +1516,7 @@
       "-p",
       "$recipe_engine/led={\"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", \"rbe_cas_input\": {\"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", \"digest\": {\"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", \"size_bytes\": 91}}}",
       "-p",
-      "build={\"dependencies\": [\"ios_debug\"], \"name\": \"felt_test\", \"parameters\": [\"test\"], \"resolved_deps\": [{\"ios_debug\": \"bcd\", \"web_tests\": \"abc\"}], \"scripts\": [\"out/script.sh\"]}",
+      "build={\"dependencies\": [\"ios_debug\"], \"name\": \"felt_test\", \"parameters\": [\"test\"], \"recipe\": \"engine_v2/tester\", \"resolved_deps\": [{\"ios_debug\": \"bcd\", \"web_tests\": \"abc\"}], \"scripts\": [\"out/script.sh\"]}",
       "-p",
       "builder_name_suffix=\"-try\"",
       "-p",
@@ -1469,6 +1627,7 @@
       "@@@STEP_LOG_LINE@proto.output@              \"parameters\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"test\"@@@",
       "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/tester\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"resolved_deps\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                {@@@",
       "@@@STEP_LOG_LINE@proto.output@                  \"ios_debug\": \"bcd\",@@@",
@@ -1529,7 +1688,7 @@
       }
     },
     "name": "launch builds (2).led edit (2)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"Linux Engine Drone-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dependencies\": [\n                \"ios_debug\"\n              ],\n              \"name\": \"felt_test\",\n              \"parameters\": [\n                \"test\"\n              ],\n              \"resolved_deps\": [\n                {\n                  \"ios_debug\": \"bcd\",\n                  \"web_tests\": \"abc\"\n                }\n              ],\n              \"scripts\": [\n                \"out/script.sh\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/tester\",\n            \"task_name\": \"felt_test\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"Linux Engine Drone-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dependencies\": [\n                \"ios_debug\"\n              ],\n              \"name\": \"felt_test\",\n              \"parameters\": [\n                \"test\"\n              ],\n              \"recipe\": \"engine_v2/tester\",\n              \"resolved_deps\": [\n                {\n                  \"ios_debug\": \"bcd\",\n                  \"web_tests\": \"abc\"\n                }\n              ],\n              \"scripts\": [\n                \"out/script.sh\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/tester\",\n            \"task_name\": \"felt_test\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -1609,6 +1768,7 @@
       "@@@STEP_LOG_LINE@proto.output@              \"parameters\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"test\"@@@",
       "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/tester\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"resolved_deps\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                {@@@",
       "@@@STEP_LOG_LINE@proto.output@                  \"ios_debug\": \"bcd\",@@@",
@@ -1670,7 +1830,7 @@
       }
     },
     "name": "launch builds (2).led edit (3)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"Linux Engine Drone-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dependencies\": [\n                \"ios_debug\"\n              ],\n              \"name\": \"felt_test\",\n              \"parameters\": [\n                \"test\"\n              ],\n              \"resolved_deps\": [\n                {\n                  \"ios_debug\": \"bcd\",\n                  \"web_tests\": \"abc\"\n                }\n              ],\n              \"scripts\": [\n                \"out/script.sh\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/tester\",\n            \"task_name\": \"felt_test\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"felt_test\"\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"Linux Engine Drone-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dependencies\": [\n                \"ios_debug\"\n              ],\n              \"name\": \"felt_test\",\n              \"parameters\": [\n                \"test\"\n              ],\n              \"recipe\": \"engine_v2/tester\",\n              \"resolved_deps\": [\n                {\n                  \"ios_debug\": \"bcd\",\n                  \"web_tests\": \"abc\"\n                }\n              ],\n              \"scripts\": [\n                \"out/script.sh\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/tester\",\n            \"task_name\": \"felt_test\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"felt_test\"\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -1750,6 +1910,7 @@
       "@@@STEP_LOG_LINE@proto.output@              \"parameters\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"test\"@@@",
       "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/tester\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"resolved_deps\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                {@@@",
       "@@@STEP_LOG_LINE@proto.output@                  \"ios_debug\": \"bcd\",@@@",
@@ -1811,7 +1972,7 @@
       }
     },
     "name": "launch builds (2).led edit (4)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"Linux Engine Drone-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dependencies\": [\n                \"ios_debug\"\n              ],\n              \"name\": \"felt_test\",\n              \"parameters\": [\n                \"test\"\n              ],\n              \"resolved_deps\": [\n                {\n                  \"ios_debug\": \"bcd\",\n                  \"web_tests\": \"abc\"\n                }\n              ],\n              \"scripts\": [\n                \"out/script.sh\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/tester\",\n            \"task_name\": \"felt_test\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"felt_test\"\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"Linux Engine Drone-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dependencies\": [\n                \"ios_debug\"\n              ],\n              \"name\": \"felt_test\",\n              \"parameters\": [\n                \"test\"\n              ],\n              \"recipe\": \"engine_v2/tester\",\n              \"resolved_deps\": [\n                {\n                  \"ios_debug\": \"bcd\",\n                  \"web_tests\": \"abc\"\n                }\n              ],\n              \"scripts\": [\n                \"out/script.sh\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/tester\",\n            \"task_name\": \"felt_test\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"felt_test\"\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -1910,6 +2071,7 @@
       "@@@STEP_LOG_LINE@proto.output@              \"parameters\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                \"test\"@@@",
       "@@@STEP_LOG_LINE@proto.output@              ],@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"recipe\": \"engine_v2/tester\",@@@",
       "@@@STEP_LOG_LINE@proto.output@              \"resolved_deps\": [@@@",
       "@@@STEP_LOG_LINE@proto.output@                {@@@",
       "@@@STEP_LOG_LINE@proto.output@                  \"ios_debug\": \"bcd\",@@@",
@@ -1970,7 +2132,7 @@
       }
     },
     "name": "launch builds (2).led launch",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"Linux Engine Drone-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"buildbucket\": {\n            \"agent\": {\n              \"input\": {\n                \"data\": {\n                  \"kitchen-checkout\": {\n                    \"cas\": {\n                      \"digest\": {\n                        \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                        \"size_bytes\": \"91\"\n                      }\n                    }\n                  }\n                }\n              },\n              \"purposes\": {\n                \"kitchen-checkout\": \"PURPOSE_EXE_PAYLOAD\"\n              }\n            }\n          },\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dependencies\": [\n                \"ios_debug\"\n              ],\n              \"name\": \"felt_test\",\n              \"parameters\": [\n                \"test\"\n              ],\n              \"resolved_deps\": [\n                {\n                  \"ios_debug\": \"bcd\",\n                  \"web_tests\": \"abc\"\n                }\n              ],\n              \"scripts\": [\n                \"out/script.sh\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/tester\",\n            \"task_name\": \"felt_test\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"felt_test\"\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"Linux Engine Drone-try\",\n          \"project\": \"proj\"\n        },\n        \"infra\": {\n          \"buildbucket\": {\n            \"agent\": {\n              \"input\": {\n                \"data\": {\n                  \"kitchen-checkout\": {\n                    \"cas\": {\n                      \"digest\": {\n                        \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                        \"size_bytes\": \"91\"\n                      }\n                    }\n                  }\n                }\n              },\n              \"purposes\": {\n                \"kitchen-checkout\": \"PURPOSE_EXE_PAYLOAD\"\n              }\n            }\n          },\n          \"swarming\": {\n            \"priority\": -20\n          }\n        },\n        \"input\": {\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"try-builder\",\n                  \"project\": \"proj\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:proj\",\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\": \"github.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"repo/a\"\n                    }\n                  ],\n                  \"gitilesCommit\": {\n                    \"host\": \"github.com\",\n                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                    \"project\": \"repo/a\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                },\n                \"number\": 123.0,\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"$recipe_engine/led\": {\n              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\",\n              \"rbe_cas_input\": {\n                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\",\n                \"digest\": {\n                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\",\n                  \"size_bytes\": 91.0\n                }\n              }\n            },\n            \"build\": {\n              \"dependencies\": [\n                \"ios_debug\"\n              ],\n              \"name\": \"felt_test\",\n              \"parameters\": [\n                \"test\"\n              ],\n              \"recipe\": \"engine_v2/tester\",\n              \"resolved_deps\": [\n                {\n                  \"ios_debug\": \"bcd\",\n                  \"web_tests\": \"abc\"\n                }\n              ],\n              \"scripts\": [\n                \"out/script.sh\"\n              ]\n            },\n            \"builder_name_suffix\": \"-try\",\n            \"environment\": \"Staging\",\n            \"gclient_variables\": {},\n            \"git_ref\": \"refs/123/master\",\n            \"git_url\": \"http://abc\",\n            \"recipe\": \"engine_v2/tester\",\n            \"task_name\": \"felt_test\",\n            \"tests\": [\n              {\n                \"dependencies\": [\n                  \"ios_debug\"\n                ],\n                \"name\": \"felt_test\",\n                \"parameters\": [\n                  \"test\"\n                ],\n                \"scripts\": [\n                  \"out/script.sh\"\n                ]\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"name\": \"felt_test\"\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
diff --git a/recipe_modules/shard_util_v2/examples/full.py b/recipe_modules/shard_util_v2/examples/full.py
index 97c7fe1..e11534a 100644
--- a/recipe_modules/shard_util_v2/examples/full.py
+++ b/recipe_modules/shard_util_v2/examples/full.py
@@ -22,11 +22,13 @@
   test_configs = api.properties.get('tests', [])
   props = api.shard_util_v2.pre_process_properties(
           {'properties': {
-              '$flutter/osx_sdk': '{"cleanup_cache": true, "sdk_version": "14a5294e"}'
+              '$flutter/osx_sdk': '{"cleanup_cache": true, "sdk_version": "14a5294e"}',
+              'validation': 'docs'
               }
            }
   )
   assert isinstance(props['properties']['$flutter/osx_sdk'], dict)
+  assert props['properties']['validation'] == 'docs'
   with api.step.nest("launch builds") as presentation:
     reqs = api.shard_util_v2.schedule_builds(build_configs, presentation)
   with api.step.nest("collect builds") as presentation:
@@ -43,53 +45,54 @@
 def GenTests(api):
   try_subbuild1 = api.shard_util_v2.try_build_message(
       build_id=8945511751514863186,
-      builder="ios_debug",
+      builder='ios_debug',
       input_props={'task_name': 'mytask'},
       output_props={
-          "cas_output_hash": {"web_tests": "abc", "ios_debug": "bcd", "full_build": "123"}
+          'cas_output_hash': {'web_tests': 'abc', 'ios_debug': 'bcd', 'full_build': '123'}
       },
-      status="SUCCESS",
+      status='SUCCESS',
   )
   try_subbuild2 = api.shard_util_v2.try_build_message(
       build_id=8945511751514863187,
-      builder="builder-subbuild2",
+      builder='builder-subbuild2',
       output_props={
-          "cas_output_hash": {"web_tests": "abc", "ios_debug": "bcd"}
+          'cas_output_hash': {'web_tests': 'abc', 'ios_debug': 'bcd'}
       },
-      status="SUCCESS",
+      status='SUCCESS',
   )
   try_failure = api.shard_util_v2.try_build_message(
       build_id=8945511751514863187,
-      builder="builder-subbuild2",
+      builder='builder-subbuild2',
       output_props={
-          "cas_output_hash": {"web_tests": "abc", "ios_debug": "bcd"}
+          'cas_output_hash': {'web_tests': 'abc', 'ios_debug': 'bcd'}
       },
-      status="FAILURE",
+      status='FAILURE',
   )
 
   props = {
       'builds': [{
-          "name": "ios_debug", "gn": [], "ninja": ["ios_debug"],
+          'name': 'ios_debug', 'gn': [], 'ninja': ['ios_debug'],
+          'dimensions': {'cpu': 'arm64'},
           'drone_dimensions': ['dimension1=abc']
       }],
       'tests': [{
-          "name": "felt_test", "dependencies": ["ios_debug"],
-          "scripts": ["out/script.sh"], "parameters": ["test"]
+          'name': 'felt_test', 'dependencies': ['ios_debug'],
+          'scripts': ['out/script.sh'], 'parameters': ['test']
       }],
       'environment': 'Staging',
       'builder_name_suffix': '-try',
-      'dependencies': [{"dependency": "android_sdk"},
-                       {"dependency": "chrome_and_driver"}],
+      'dependencies': [{'dependency': 'android_sdk'},
+                       {'dependency': 'chrome_and_driver'}],
       '$recipe_engine/led': {
-          "led_run_id":
-              "flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc",
-          "rbe_cas_input": {
-              "cas_instance":
-                  "projects/chromium-swarm/instances/default_instance",
-              "digest": {
-                  "hash":
-                      "146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e",
-                  "size_bytes":
+          'led_run_id':
+              'flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc',
+          'rbe_cas_input': {
+              'cas_instance':
+                  'projects/chromium-swarm/instances/default_instance',
+              'digest': {
+                  'hash':
+                      '146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e',
+                  'size_bytes':
                       91
               }
           }
@@ -97,15 +100,16 @@
   }
   props_bb = {
       'task_name': 'mytask', 'builds': [{
-          "name": "ios_debug", "gn": ["--ios"],
-          "ninja": {"config": "ios_debug",
-                    "targets": []}, 'drone_dimensions': ['dimension1=abc'],
-          "generators": [{"name": "generator1", "script": "script1.sh"}]
+          'name': 'ios_debug', 'gn': ['--ios'],
+          'dimensions': {'cpu': 'arm64'},
+          'ninja': {'config': 'ios_debug',
+                    'targets': []}, 'drone_dimensions': ['dimension1=abc'],
+          'generators': [{'name': 'generator1', 'script': 'script1.sh'}]
       }], 'tests': [{
-          "name": "felt_test", "dependencies": ["ios_debug"],
-          "scripts": ["out/script.sh"], "parameters": ["test"]
-      }], 'dependencies': [{"dependency": "android_sdk"},
-                           {"dependency": "chrome_and_driver"}],
+          'name': 'felt_test', 'dependencies': ['ios_debug'],
+          'scripts': ['out/script.sh'], 'parameters': ['test']
+      }], 'dependencies': [{'dependency': 'android_sdk'},
+                           {'dependency': 'chrome_and_driver'}],
       'environment': 'Staging', 'builder_name_suffix': '-try'
   }
 
@@ -126,7 +130,7 @@
       ),
       api.shard_util_v2.child_led_steps(
           subbuilds=[try_subbuild1, try_subbuild2],
-          collect_step="collect builds",
+          collect_step='collect builds',
       )
   )
 
@@ -137,11 +141,11 @@
   presubmit_props_bb['no_goma'] = 'true'
 
   yield (
-      api.buildbucket_util.test("presubmit_bb", tryjob=True, status="failure") +
+      api.buildbucket_util.test('presubmit_bb', tryjob=True, status='failure') +
       api.properties(**presubmit_props_bb) + api.platform.name('linux') +
       api.shard_util_v2.child_build_steps(
           subbuilds=[try_failure],
-          launch_step="launch builds",
-          collect_step="collect builds",
+          launch_step='launch builds',
+          collect_step='collect builds',
       )
   )
diff --git a/recipes/devicelab/devicelab_drone_build_test.expected/artifact does not exist.json b/recipes/devicelab/devicelab_drone_build_test.expected/artifact does not exist.json
index 8cabd75..6f9671c 100644
--- a/recipes/devicelab/devicelab_drone_build_test.expected/artifact does not exist.json
+++ b/recipes/devicelab/devicelab_drone_build_test.expected/artifact does not exist.json
@@ -11,7 +11,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -32,12 +32,12 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "ls",
-      "gs://flutter_devicelab/flutter/prod/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
+      "gs://flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
     ],
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -65,7 +65,7 @@
     ],
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -97,7 +97,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -123,7 +123,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -148,7 +148,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -177,7 +177,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -202,7 +202,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -229,7 +229,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -254,7 +254,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -285,7 +285,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -323,7 +323,7 @@
     },
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -363,7 +363,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -377,9 +377,9 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
+      "dart",
+      "pub",
+      "get"
     ],
     "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
     "env": {
@@ -401,9 +401,10 @@
         "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
       ]
     },
+    "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -413,8 +414,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "flutter doctor (2)",
-    "timeout": 300
+    "name": "dart pub get (2)"
   },
   {
     "cmd": [
@@ -454,7 +454,7 @@
     },
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -474,58 +474,6 @@
     ]
   },
   {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "-m",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_2/*",
-      "gs://flutter_devicelab/flutter/prod/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
-    ],
-    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
-    "env": {
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "GIT_BRANCH": "master",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "1",
-      "OS": "linux",
-      "PUB_CACHE": "[START_DIR]/.pub-cache",
-      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
-      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
-        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
-        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
-        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "test:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil upload artifacts",
-    "~followup_annotations": [
-      "@@@STEP_LINK@artifacts@https://console.cloud.google.com/storage/browser/flutter_devicelab/flutter/prod/2d72510e447ab60a9728aeea2362d8be2cbd7789/def@@@"
-    ]
-  },
-  {
     "cmd": [],
     "name": "Killing Processes"
   },
@@ -557,7 +505,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -600,7 +548,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -643,7 +591,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -686,7 +634,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -729,7 +677,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -776,7 +724,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -789,6 +737,58 @@
     "name": "OS info (2)"
   },
   {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_2/*",
+      "gs://flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "1",
+      "OS": "linux",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "test:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil upload artifacts",
+    "~followup_annotations": [
+      "@@@STEP_LINK@artifacts@https://console.cloud.google.com/storage/browser/flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/def@@@"
+    ]
+  },
+  {
     "cmd": [],
     "name": "launch builds"
   },
@@ -802,7 +802,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -813,7 +813,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"prod\", \"builder\": \"Linux Production Engine Drone\", \"project\": \"test\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"git.example.com\", \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"project\": \"test/repo\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"artifact\": \"def\", \"build\": {\"drone_dimensions\": [], \"name\": \"abc\", \"properties\": {\"artifact\": \"def\", \"dependencies\": [], \"git_branch\": \"master\", \"parent_builder\": \"Linux abc\", \"tags\": [], \"task_name\": \"abc\"}}, \"dependencies\": [], \"gclient_variables\": {}, \"git_branch\": \"master\", \"git_ref\": \"refs/pull/1/head\", \"parent_builder\": \"Linux abc\", \"recipe\": \"devicelab/devicelab_test_drone\", \"tags\": [], \"task_name\": \"abc\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"Linux Engine Drone\", \"project\": \"test\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"git.example.com\", \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"project\": \"test/repo\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"$flutter/devicelab_osx_sdk\": {\"sdk_version\": null}, \"artifact\": \"def\", \"build\": {\"drone_dimensions\": [], \"name\": \"abc\", \"properties\": {\"$flutter/devicelab_osx_sdk\": {\"sdk_version\": null}, \"artifact\": \"def\", \"dependencies\": [], \"git_branch\": \"master\", \"parent_builder\": \"Linux abc\", \"tags\": [], \"task_name\": \"abc\"}, \"recipe\": \"devicelab/devicelab_test_drone\"}, \"dependencies\": [], \"gclient_variables\": {}, \"git_branch\": \"master\", \"git_ref\": \"refs/pull/1/head\", \"parent_builder\": \"Linux abc\", \"recipe\": \"devicelab/devicelab_test_drone\", \"tags\": [], \"task_name\": \"abc\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -821,8 +821,8 @@
       "@@@STEP_LOG_LINE@json.output@    {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
       "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"prod\", @@@",
-      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Linux Production Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"ci\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Linux Engine Drone\", @@@",
       "@@@STEP_LOG_LINE@json.output@          \"project\": \"test\"@@@",
       "@@@STEP_LOG_LINE@json.output@        }, @@@",
       "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514000\"@@@",
@@ -836,8 +836,8 @@
       "@@@STEP_LOG_LINE@request@    {@@@",
       "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
       "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"bucket\": \"prod\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Production Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"bucket\": \"ci\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
       "@@@STEP_LOG_LINE@request@          \"project\": \"test\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
@@ -854,20 +854,27 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"test/repo\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"$flutter/devicelab_osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"sdk_version\": null@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"artifact\": \"def\", @@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
       "@@@STEP_LOG_LINE@request@            \"drone_dimensions\": [], @@@",
       "@@@STEP_LOG_LINE@request@            \"name\": \"abc\", @@@",
       "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@              \"$flutter/devicelab_osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@                \"sdk_version\": null@@@",
+      "@@@STEP_LOG_LINE@request@              }, @@@",
       "@@@STEP_LOG_LINE@request@              \"artifact\": \"def\", @@@",
       "@@@STEP_LOG_LINE@request@              \"dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@              \"git_branch\": \"master\", @@@",
       "@@@STEP_LOG_LINE@request@              \"parent_builder\": \"Linux abc\", @@@",
       "@@@STEP_LOG_LINE@request@              \"tags\": [], @@@",
       "@@@STEP_LOG_LINE@request@              \"task_name\": \"abc\"@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"devicelab/devicelab_test_drone\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
@@ -924,7 +931,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -950,7 +957,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
diff --git a/recipes/devicelab/devicelab_drone_build_test.expected/artifact exists.json b/recipes/devicelab/devicelab_drone_build_test.expected/artifact exists.json
index 4f923c6..1cc9b7c 100644
--- a/recipes/devicelab/devicelab_drone_build_test.expected/artifact exists.json
+++ b/recipes/devicelab/devicelab_drone_build_test.expected/artifact exists.json
@@ -9,18 +9,6 @@
       "%MEM"
     ],
     "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "test:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
     "name": "OS info"
   },
   {
@@ -32,21 +20,9 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "ls",
-      "gs://flutter_devicelab/flutter/prod/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
+      "gs://flutter_devicelab/flutter//refs/pull/1/head/def"
     ],
     "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "test:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
     "name": "gsutil list"
   },
   {
@@ -61,20 +37,8 @@
       "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "test:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"prod\", \"builder\": \"Linux Production Engine Drone\", \"project\": \"test\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"git.example.com\", \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"project\": \"test/repo\", \"ref\": \"refs/heads/master\"}, \"priority\": 25, \"properties\": {\"artifact\": \"def\", \"build\": {\"drone_dimensions\": [], \"name\": \"abc\", \"properties\": {\"artifact\": \"def\", \"dependencies\": [], \"git_branch\": \"master\", \"parent_builder\": \"Linux abc\", \"tags\": [], \"task_name\": \"abc\"}}, \"dependencies\": [], \"gclient_variables\": {}, \"git_branch\": \"master\", \"git_ref\": \"refs/pull/1/head\", \"git_url\": \"test/repo\", \"parent_builder\": \"Linux abc\", \"recipe\": \"devicelab/devicelab_test_drone\", \"tags\": [], \"task_name\": \"abc\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"builder\": \"Linux Engine Drone\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"priority\": 30, \"properties\": {\"$flutter/devicelab_osx_sdk\": {\"sdk_version\": null}, \"artifact\": \"def\", \"build\": {\"drone_dimensions\": [], \"name\": \"abc\", \"properties\": {\"$flutter/devicelab_osx_sdk\": {\"sdk_version\": null}, \"artifact\": \"def\", \"dependencies\": [], \"git_branch\": \"master\", \"parent_builder\": \"Linux abc\", \"tags\": [], \"task_name\": \"abc\"}, \"recipe\": \"devicelab/devicelab_test_drone\"}, \"dependencies\": [], \"gclient_variables\": {}, \"git_branch\": \"master\", \"git_ref\": \"refs/pull/1/head\", \"git_url\": \"test/repo\", \"parent_builder\": \"Linux abc\", \"recipe\": \"devicelab/devicelab_test_drone\", \"tags\": [], \"task_name\": \"abc\"}, \"requestId\": \"0-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"0\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -82,9 +46,7 @@
       "@@@STEP_LOG_LINE@json.output@    {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
       "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"prod\", @@@",
-      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Linux Production Engine Drone\", @@@",
-      "@@@STEP_LOG_LINE@json.output@          \"project\": \"test\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Linux Engine Drone\"@@@",
       "@@@STEP_LOG_LINE@json.output@        }, @@@",
       "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514000\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
@@ -97,9 +59,7 @@
       "@@@STEP_LOG_LINE@request@    {@@@",
       "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
       "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"bucket\": \"prod\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Production Engine Drone\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"project\": \"test\"@@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/main\"@@@",
@@ -109,26 +69,27 @@
       "@@@STEP_LOG_LINE@request@          \"luci.buildbucket.parent_tracking\": false@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", @@@",
-      "@@@STEP_LOG_LINE@request@        \"gitilesCommit\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"host\": \"git.example.com\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"project\": \"test/repo\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/master\"@@@",
-      "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"$flutter/devicelab_osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"sdk_version\": null@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"artifact\": \"def\", @@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
       "@@@STEP_LOG_LINE@request@            \"drone_dimensions\": [], @@@",
       "@@@STEP_LOG_LINE@request@            \"name\": \"abc\", @@@",
       "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@              \"$flutter/devicelab_osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@                \"sdk_version\": null@@@",
+      "@@@STEP_LOG_LINE@request@              }, @@@",
       "@@@STEP_LOG_LINE@request@              \"artifact\": \"def\", @@@",
       "@@@STEP_LOG_LINE@request@              \"dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@              \"git_branch\": \"master\", @@@",
       "@@@STEP_LOG_LINE@request@              \"parent_builder\": \"Linux abc\", @@@",
       "@@@STEP_LOG_LINE@request@              \"tags\": [], @@@",
       "@@@STEP_LOG_LINE@request@              \"task_name\": \"abc\"@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"devicelab/devicelab_test_drone\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
@@ -140,14 +101,14 @@
       "@@@STEP_LOG_LINE@request@          \"tags\": [], @@@",
       "@@@STEP_LOG_LINE@request@          \"task_name\": \"abc\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"requestId\": \"0-00000000-0000-0000-0000-000000001337\", @@@",
       "@@@STEP_LOG_LINE@request@        \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"parentRunId\": \"fake-task-id\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"tags\": [@@@",
       "@@@STEP_LOG_LINE@request@          {@@@",
       "@@@STEP_LOG_LINE@request@            \"key\": \"parent_buildbucket_id\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"value\": \"8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"0\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          {@@@",
       "@@@STEP_LOG_LINE@request@            \"key\": \"user_agent\", @@@",
@@ -184,18 +145,6 @@
       "8922054662172514000"
     ],
     "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "test:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
     "name": "collect builds.collect.wait",
     "timeout": 86400,
     "~followup_annotations": [
@@ -210,18 +159,6 @@
       "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "test:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
     "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\": \"8922054662172514000\"}}]}",
     "~followup_annotations": [
diff --git a/recipes/devicelab/devicelab_drone_build_test.expected/local-engine.json b/recipes/devicelab/devicelab_drone_build_test.expected/local-engine.json
index a3ed465..36e723e 100644
--- a/recipes/devicelab/devicelab_drone_build_test.expected/local-engine.json
+++ b/recipes/devicelab/devicelab_drone_build_test.expected/local-engine.json
@@ -11,7 +11,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -32,12 +32,12 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "ls",
-      "gs://flutter_devicelab/flutter/prod/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
+      "gs://flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
     ],
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -65,7 +65,7 @@
     ],
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -96,7 +96,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -122,7 +122,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -147,7 +147,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -176,7 +176,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -201,7 +201,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -228,7 +228,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -253,7 +253,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -283,7 +283,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -322,7 +322,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -353,7 +353,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -393,7 +393,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -423,7 +423,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -463,7 +463,7 @@
     },
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -505,7 +505,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -519,9 +519,9 @@
   },
   {
     "cmd": [
-      "flutter",
-      "doctor",
-      "--verbose"
+      "dart",
+      "pub",
+      "get"
     ],
     "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
     "env": {
@@ -546,9 +546,10 @@
         "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
       ]
     },
+    "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -558,8 +559,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "flutter doctor (2)",
-    "timeout": 300
+    "name": "dart pub get (2)"
   },
   {
     "cmd": [
@@ -604,7 +604,7 @@
     },
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -624,61 +624,6 @@
     ]
   },
   {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "-m",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_2/*",
-      "gs://flutter_devicelab/flutter/prod/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
-    ],
-    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
-    "env": {
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "GIT_BRANCH": "master",
-      "LOCAL_ENGINE": "[CLEANUP]/builder/src/out/host-release",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "OS": "linux",
-      "PUB_CACHE": "[START_DIR]/.pub-cache",
-      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
-      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CLEANUP]/builder/src/out/host-release/dart-sdk/bin",
-        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
-        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
-        "[CLEANUP]/builder/src/out/host-release/dart-sdk/bin",
-        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
-        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "test:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil upload artifacts",
-    "~followup_annotations": [
-      "@@@STEP_LINK@artifacts@https://console.cloud.google.com/storage/browser/flutter_devicelab/flutter/prod/2d72510e447ab60a9728aeea2362d8be2cbd7789/def@@@"
-    ]
-  },
-  {
     "cmd": [],
     "name": "Killing Processes"
   },
@@ -713,7 +658,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -759,7 +704,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -805,7 +750,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -851,7 +796,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -897,7 +842,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -947,7 +892,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -960,6 +905,61 @@
     "name": "OS info (2)"
   },
   {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_2/*",
+      "gs://flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/def"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LOCAL_ENGINE": "[CLEANUP]/builder/src/out/host-release",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "linux",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/builder/src/out/host-release/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/builder/src/out/host-release/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "test:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil upload artifacts",
+    "~followup_annotations": [
+      "@@@STEP_LINK@artifacts@https://console.cloud.google.com/storage/browser/flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/def@@@"
+    ]
+  },
+  {
     "cmd": [],
     "name": "launch builds"
   },
@@ -973,7 +973,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -984,7 +984,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"prod\", \"builder\": \"Linux Production Engine Drone\", \"project\": \"test\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"git.example.com\", \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"project\": \"test/repo\", \"ref\": \"refs/heads/master\"}, \"priority\": 25, \"properties\": {\"artifact\": \"def\", \"build\": {\"drone_dimensions\": [], \"name\": \"abc\", \"properties\": {\"artifact\": \"def\", \"dependencies\": [], \"git_branch\": \"master\", \"parent_builder\": \"Linux abc\", \"tags\": [], \"task_name\": \"abc\"}}, \"dependencies\": [], \"gclient_variables\": {}, \"git_branch\": \"master\", \"local_engine\": \"host-release\", \"local_engine_cas_hash\": \"isolatehashlocalengine/22\", \"parent_builder\": \"Linux abc\", \"recipe\": \"devicelab/devicelab_test_drone\", \"tags\": [], \"task_name\": \"abc\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"Linux Engine Drone\", \"project\": \"test\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"git.example.com\", \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"project\": \"test/repo\", \"ref\": \"refs/heads/master\"}, \"priority\": 30, \"properties\": {\"$flutter/devicelab_osx_sdk\": {\"sdk_version\": null}, \"artifact\": \"def\", \"build\": {\"drone_dimensions\": [], \"name\": \"abc\", \"properties\": {\"$flutter/devicelab_osx_sdk\": {\"sdk_version\": null}, \"artifact\": \"def\", \"dependencies\": [], \"git_branch\": \"master\", \"parent_builder\": \"Linux abc\", \"tags\": [], \"task_name\": \"abc\"}, \"recipe\": \"devicelab/devicelab_test_drone\"}, \"dependencies\": [], \"gclient_variables\": {}, \"git_branch\": \"master\", \"local_engine\": \"host-release\", \"local_engine_cas_hash\": \"isolatehashlocalengine/22\", \"parent_builder\": \"Linux abc\", \"recipe\": \"devicelab/devicelab_test_drone\", \"tags\": [], \"task_name\": \"abc\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -992,8 +992,8 @@
       "@@@STEP_LOG_LINE@json.output@    {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
       "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"prod\", @@@",
-      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Linux Production Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"ci\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Linux Engine Drone\", @@@",
       "@@@STEP_LOG_LINE@json.output@          \"project\": \"test\"@@@",
       "@@@STEP_LOG_LINE@json.output@        }, @@@",
       "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514000\"@@@",
@@ -1007,8 +1007,8 @@
       "@@@STEP_LOG_LINE@request@    {@@@",
       "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
       "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"bucket\": \"prod\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Production Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"bucket\": \"ci\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
       "@@@STEP_LOG_LINE@request@          \"project\": \"test\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
@@ -1025,20 +1025,27 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"test/repo\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/master\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"$flutter/devicelab_osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"sdk_version\": null@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"artifact\": \"def\", @@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
       "@@@STEP_LOG_LINE@request@            \"drone_dimensions\": [], @@@",
       "@@@STEP_LOG_LINE@request@            \"name\": \"abc\", @@@",
       "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@              \"$flutter/devicelab_osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@                \"sdk_version\": null@@@",
+      "@@@STEP_LOG_LINE@request@              }, @@@",
       "@@@STEP_LOG_LINE@request@              \"artifact\": \"def\", @@@",
       "@@@STEP_LOG_LINE@request@              \"dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@              \"git_branch\": \"master\", @@@",
       "@@@STEP_LOG_LINE@request@              \"parent_builder\": \"Linux abc\", @@@",
       "@@@STEP_LOG_LINE@request@              \"tags\": [], @@@",
       "@@@STEP_LOG_LINE@request@              \"task_name\": \"abc\"@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"devicelab/devicelab_test_drone\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
@@ -1096,7 +1103,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
@@ -1122,7 +1129,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "test:prod"
+        "name": "test:ci"
       },
       "resultdb": {
         "current_invocation": {
diff --git a/recipes/devicelab/devicelab_drone_build_test.expected/no-artifact-name.json b/recipes/devicelab/devicelab_drone_build_test.expected/no-artifact-name.json
deleted file mode 100644
index ef6e05a..0000000
--- a/recipes/devicelab/devicelab_drone_build_test.expected/no-artifact-name.json
+++ /dev/null
@@ -1,33 +0,0 @@
-[
-  {
-    "cmd": [
-      "top",
-      "-b",
-      "-n",
-      "3",
-      "-o",
-      "%MEM"
-    ],
-    "infra_step": true,
-    "name": "OS info"
-  },
-  {
-    "cmd": [],
-    "name": "RECIPE CRASH (Uncaught exception)",
-    "~followup_annotations": [
-      "@@@STEP_EXCEPTION@@@",
-      "The recipe has crashed at point 'Uncaught exception'!",
-      "",
-      "Traceback (most recent call last):",
-      "  File \"RECIPE_REPO[flutter]/recipes/devicelab/devicelab_drone_build_test.py\", line 66, in RunSteps",
-      "    raise ValueError('An artifact property is required')",
-      "ValueError('An artifact property is required')"
-    ]
-  },
-  {
-    "failure": {
-      "humanReason": "Uncaught Exception: ValueError('An artifact property is required')"
-    },
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json b/recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json
new file mode 100644
index 0000000..a3e0676
--- /dev/null
+++ b/recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json
@@ -0,0 +1,1492 @@
+[
+  {
+    "cmd": [
+      "top",
+      "-l",
+      "3",
+      "-o",
+      "mem"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "OS info"
+  },
+  {
+    "cmd": [
+      "xattr",
+      "/opt/s/w/ir/cipd_bin_packages/python3"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "python3 xattr info"
+  },
+  {
+    "cmd": [
+      "xattr",
+      "/opt/s/w/ir/cipd_bin_packages/git"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git xattr info"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "ls",
+      "gs://flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/abc"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil list"
+  },
+  {
+    "cmd": [],
+    "name": "Checkout flutter/flutter"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+      "--path",
+      "[CLEANUP]/tmp_tmp_1/flutter sdk",
+      "--url",
+      "https://flutter.googlesource.com/mirrors/flutter"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.git setup",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "fetch",
+      "origin",
+      "--recurse-submodules",
+      "--progress",
+      "--tags"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "env": {
+      "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.git fetch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "checkout",
+      "-f",
+      "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.git checkout",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.read revision",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "clean",
+      "-f",
+      "-d",
+      "-x"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.git clean",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "submodule",
+      "sync"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.submodule sync",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "submodule",
+      "update",
+      "--init",
+      "--recursive"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.submodule update",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "cmd": [],
+    "name": "Dependencies"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_2/abc"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "mkdir abc"
+  },
+  {
+    "cmd": [
+      "flutter",
+      "doctor",
+      "--verbose"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "flutter doctor",
+    "timeout": 300
+  },
+  {
+    "cmd": [
+      "dart",
+      "pub",
+      "get"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "dart pub get"
+  },
+  {
+    "cmd": [
+      "dart",
+      "pub",
+      "get"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "dart pub get (2)"
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[CACHE]/osx_sdk",
+      "-ensure-file",
+      "infra/tools/mac_toolchain/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "ensure_installed",
+    "~followup_annotations": [
+      "@@@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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/mac_toolchain/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": [
+      "[CACHE]/osx_sdk/mac_toolchain",
+      "install",
+      "-kind",
+      "ios",
+      "-xcode-version",
+      "deadbeef",
+      "-output-dir",
+      "[CACHE]/osx_sdk/XCode.app",
+      "-cipd-package-prefix",
+      "flutter_internal/ios/xcode",
+      "-with-runtime=True"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "install xcode"
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "com.apple.CoreSimulator.CoreSimulatorDevice"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "kill dart"
+  },
+  {
+    "cmd": [
+      "sudo",
+      "xcode-select",
+      "--switch",
+      "[CACHE]/osx_sdk/XCode.app"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "select XCode"
+  },
+  {
+    "cmd": [
+      "xcrun",
+      "simctl",
+      "list"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "list simulators"
+  },
+  {
+    "cmd": [
+      "dart",
+      "bin/test_runner.dart",
+      "test",
+      "-t",
+      "abc",
+      "--luci-builder",
+      "Mac_ios abc",
+      "--task-args",
+      "build",
+      "--task-args",
+      "application-binary-path=[CLEANUP]/tmp_tmp_2/abc",
+      "--git-branch",
+      "master"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "build abc",
+    "timeout": 1800,
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@test_stdout@@@@",
+      "@@@STEP_LOG_END@test_stdout@@@",
+      "@@@STEP_LOG_LINE@test_stderr@@@@",
+      "@@@STEP_LOG_END@test_stderr@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Killing Processes"
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "dart"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill dart",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "flutter"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill flutter",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "Chrome"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill Chrome",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "Safari"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill Safari",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "java"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill Safari (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "adb"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill Safari (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "top",
+      "-l",
+      "3",
+      "-o",
+      "mem"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "OS info (2)"
+  },
+  {
+    "cmd": [
+      "xattr",
+      "/opt/s/w/ir/cipd_bin_packages/python3"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "python3 xattr info (2)"
+  },
+  {
+    "cmd": [
+      "xattr",
+      "/opt/s/w/ir/cipd_bin_packages/git"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git xattr info (2)"
+  },
+  {
+    "cmd": [
+      "sudo",
+      "xcode-select",
+      "--reset"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "reset XCode"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_2/*",
+      "gs://flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/abc"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil upload artifacts",
+    "~followup_annotations": [
+      "@@@STEP_LINK@artifacts@https://console.cloud.google.com/storage/browser/flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/abc@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch builds"
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "launch builds.schedule",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"Mac Engine Drone\", \"project\": \"project\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"chromium.googlesource.com\", \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"project\": \"project\", \"ref\": \"refs/heads/master\"}, \"priority\": 30, \"properties\": {\"$flutter/devicelab_osx_sdk\": {\"sdk_version\": null}, \"$flutter/osx_sdk\": {\"sdk_version\": \"deadbeef\"}, \"artifact\": \"abc\", \"build\": {\"drone_dimensions\": [], \"name\": \"abc\", \"properties\": {\"$flutter/devicelab_osx_sdk\": {\"sdk_version\": null}, \"artifact\": \"abc\", \"dependencies\": [{\"dependency\": \"xcode\"}], \"git_branch\": \"master\", \"parent_builder\": \"Mac_ios abc\", \"tags\": [\"ios\"], \"task_name\": \"abc\"}, \"recipe\": \"devicelab/devicelab_test_drone\"}, \"dependencies\": [{\"dependency\": \"xcode\"}], \"gclient_variables\": {}, \"git_branch\": \"master\", \"parent_builder\": \"Mac_ios abc\", \"recipe\": \"devicelab/devicelab_test_drone\", \"tags\": [\"ios\"], \"task_name\": \"abc\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"ci\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Mac Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }, @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514000\"@@@",
+      "@@@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@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"bucket\": \"ci\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Mac Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"experimental\": \"NO\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"experiments\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"luci.buildbucket.parent_tracking\": false@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"host\": \"chromium.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"project\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/master\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
+      "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"$flutter/devicelab_osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"sdk_version\": null@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          \"$flutter/osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"sdk_version\": \"deadbeef\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          \"artifact\": \"abc\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"drone_dimensions\": [], @@@",
+      "@@@STEP_LOG_LINE@request@            \"name\": \"abc\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@              \"$flutter/devicelab_osx_sdk\": {@@@",
+      "@@@STEP_LOG_LINE@request@                \"sdk_version\": null@@@",
+      "@@@STEP_LOG_LINE@request@              }, @@@",
+      "@@@STEP_LOG_LINE@request@              \"artifact\": \"abc\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@request@                {@@@",
+      "@@@STEP_LOG_LINE@request@                  \"dependency\": \"xcode\"@@@",
+      "@@@STEP_LOG_LINE@request@                }@@@",
+      "@@@STEP_LOG_LINE@request@              ], @@@",
+      "@@@STEP_LOG_LINE@request@              \"git_branch\": \"master\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"parent_builder\": \"Mac_ios abc\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@request@                \"ios\"@@@",
+      "@@@STEP_LOG_LINE@request@              ], @@@",
+      "@@@STEP_LOG_LINE@request@              \"task_name\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"devicelab/devicelab_test_drone\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          \"dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@request@            {@@@",
+      "@@@STEP_LOG_LINE@request@              \"dependency\": \"xcode\"@@@",
+      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@          ], @@@",
+      "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
+      "@@@STEP_LOG_LINE@request@          \"git_branch\": \"master\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"parent_builder\": \"Mac_ios abc\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"recipe\": \"devicelab/devicelab_test_drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@request@            \"ios\"@@@",
+      "@@@STEP_LOG_LINE@request@          ], @@@",
+      "@@@STEP_LOG_LINE@request@          \"task_name\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"parentRunId\": \"fake-task-id\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"parent_buildbucket_id\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"user_agent\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"recipe\"@@@",
+      "@@@STEP_LOG_LINE@request@          }@@@",
+      "@@@STEP_LOG_LINE@request@        ]@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect builds"
+  },
+  {
+    "cmd": [],
+    "name": "collect builds.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "20s",
+      "8922054662172514000"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "collect builds.collect.wait",
+    "timeout": 86400,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "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\": \"8922054662172514000\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514000\", @@@",
+      "@@@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@@@",
+      "@@@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\": \"8922054662172514000\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect builds.display builds",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect builds.display builds.abc",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@"
+    ]
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipes/devicelab/devicelab_drone_build_test.py b/recipes/devicelab/devicelab_drone_build_test.py
index 96fdf6e..6b6d7ac 100644
--- a/recipes/devicelab/devicelab_drone_build_test.py
+++ b/recipes/devicelab/devicelab_drone_build_test.py
@@ -61,9 +61,7 @@
     raise ValueError('A task_name property is required')
 
   commit_sha = api.repo_util.get_env_ref()
-  artifact = api.properties.get('artifact', None)
-  if not artifact:
-    raise ValueError('An artifact property is required')
+  artifact = api.properties.get('artifact', task_name)
   bucket = api.buildbucket.build.builder.bucket
   artifact_gcs_dir = 'flutter/%s/%s' % (bucket, commit_sha)
   artifact_gcs_path = '%s/%s' % (artifact_gcs_dir, artifact)
@@ -79,7 +77,7 @@
       api, task_name, api.properties.get('dependencies', []), artifact
   )
   with api.step.nest('launch builds') as presentation:
-    tasks = api.shard_util_v2.schedule(targets, 'devicelab/devicelab_test_drone', presentation)
+    tasks = api.shard_util_v2.schedule(targets, presentation)
   with api.step.nest('collect builds') as presentation:
     build_results = api.shard_util_v2.collect(tasks, presentation)
     api.display_util.display_subbuilds(
@@ -102,11 +100,16 @@
       'parent_builder': api.properties.get('buildername'),
       'artifact': artifact,
       'git_branch': api.properties.get('git_branch'),
-      'tags': tags
+      'tags': tags,
+      '$flutter/devicelab_osx_sdk': {'sdk_version': api.properties.get('xcode')}
   }
   reqs.append(
-       {'name': task_name, 'properties': test_props,
-        'drone_dimensions': api.properties.get('drone_dimensions', [])}
+      {
+          'name': task_name,
+          'properties': test_props,
+          'drone_dimensions': api.properties.get('drone_dimensions', []),
+          'recipe': 'devicelab/devicelab_test_drone'
+      }
   )
   return reqs
 
@@ -154,12 +157,29 @@
     # git_branch is set only when the build was triggered on post-submit.
     runner_params.extend(['--git-branch', git_branch])
   with api.context(env=env, env_prefixes=env_prefixes, cwd=devicelab_path):
-    api.repo_util.run_flutter_doctor()
+    api.retry.run_flutter_doctor()
     api.step('dart pub get', ['dart', 'pub', 'get'], infra_step=True)
-    dep_list = {d['dependency']: d.get('version') for d in deps}
-    if 'xcode' not in dep_list:
-      with api.context(env=env, env_prefixes=env_prefixes):
-        api.repo_util.run_flutter_doctor()
+    deps = api.properties.get('dependencies', [])
+    with api.context(env=env, env_prefixes=env_prefixes):
+      api.step('dart pub get', ['dart', 'pub', 'get'], infra_step=True)
+      dep_list = {d['dependency']: d.get('version') for d in deps}
+      if 'xcode' in dep_list:
+        with api.osx_sdk('ios'):
+          api.flutter_deps.gems(
+              env, env_prefixes, flutter_path.join('dev', 'ci', 'mac')
+          )
+          with api.context(env=env, env_prefixes=env_prefixes):
+            test_runner_command = ['dart', 'bin/test_runner.dart', 'test']
+            test_runner_command.extend(runner_params)
+            try:
+              api.test_utils.run_test(
+                  'build %s' % task_name,
+                  test_runner_command,
+                  timeout_secs=MAX_TIMEOUT_SECS
+              )
+            finally:
+              debug_after_failure(api, task_name)
+      else:
         test_runner_command = ['dart', 'bin/test_runner.dart', 'test']
         test_runner_command.extend(runner_params)
         try:
@@ -168,18 +188,18 @@
               test_runner_command,
               timeout_secs=MAX_TIMEOUT_SECS
           )
-          api.gsutil.upload(
-              bucket='flutter_devicelab',
-              source='%s/*' % artifact_dir,
-              dest=artifact_gcs_dir,
-              link_name='artifacts',
-              args=['-r'],
-              multithreaded=True,
-              name='upload artifacts',
-              unauthenticated_url=True
-          )
         finally:
           debug_after_failure(api, task_name)
+      api.gsutil.upload(
+          bucket='flutter_devicelab',
+          source='%s/*' % artifact_dir,
+          dest=artifact_gcs_dir,
+          link_name='artifacts',
+          args=['-r'],
+          multithreaded=True,
+          name='upload artifacts',
+          unauthenticated_url=True
+      )
 
 
 def debug_after_failure(api, task_name):
@@ -196,13 +216,6 @@
       api.expect_exception('ValueError'),
   )
   yield api.test(
-      "no-artifact-name",
-      api.properties(
-          buildername='Linux abc', task_name='abc', git_ref='refs/pull/1/head'
-      ),
-      api.expect_exception('ValueError'),
-  )
-  yield api.test(
       "artifact exists",
       api.properties(
           buildername='Linux abc',
@@ -218,12 +231,6 @@
           stdout=api.raw_io
           .output_text('gs://flutter_devicelab/flutter/refs/pull/1/head/def')
       ),
-      api.buildbucket.ci_build(
-          project='test',
-          bucket='prod',
-          git_repo='git.example.com/test/repo',
-          git_ref='refs/heads/master',
-      )
   )
   yield api.test(
       "artifact does not exist",
@@ -237,7 +244,6 @@
       api.repo_util.flutter_environment_data(checkout_dir=checkout_path),
       api.buildbucket.ci_build(
           project='test',
-          bucket='prod',
           git_repo='git.example.com/test/repo',
       ),
   )
@@ -253,8 +259,22 @@
       ), api.repo_util.flutter_environment_data(checkout_dir=checkout_path),
       api.buildbucket.ci_build(
           project='test',
-          bucket='prod',
           git_repo='git.example.com/test/repo',
           git_ref='refs/heads/master',
       )
   )
+  yield api.test(
+      "xcode-mac",
+      api.properties(
+          buildername='Mac_ios abc',
+          task_name='abc',
+          tags=['ios'],
+          dependencies=[{'dependency': 'xcode'}],
+          git_branch='master',
+          **{'$flutter/osx_sdk': {
+              'sdk_version': 'deadbeef',
+          }}
+      ), api.repo_util.flutter_environment_data(checkout_dir=checkout_path),
+      api.platform.name('mac'),
+      api.buildbucket.ci_build(git_ref='refs/heads/master',)
+  )
diff --git a/recipes/devicelab/devicelab_test_drone.expected/basic.json b/recipes/devicelab/devicelab_test_drone.expected/basic.json
index f625ccc..f8b56ce 100644
--- a/recipes/devicelab/devicelab_test_drone.expected/basic.json
+++ b/recipes/devicelab/devicelab_test_drone.expected/basic.json
@@ -1235,7 +1235,7 @@
       "bin/test_runner.dart",
       "upload-metrics",
       "--test-flaky",
-      "True",
+      "False",
       "--builder-bucket",
       "ci",
       "--results-file",
diff --git a/recipes/devicelab/devicelab_test_drone.expected/mac.json b/recipes/devicelab/devicelab_test_drone.expected/mac.json
new file mode 100644
index 0000000..900f056
--- /dev/null
+++ b/recipes/devicelab/devicelab_test_drone.expected/mac.json
@@ -0,0 +1,1782 @@
+[
+  {
+    "cmd": [
+      "top",
+      "-l",
+      "3",
+      "-o",
+      "mem"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "OS info"
+  },
+  {
+    "cmd": [
+      "xattr",
+      "/opt/s/w/ir/cipd_bin_packages/python3"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "python3 xattr info"
+  },
+  {
+    "cmd": [
+      "xattr",
+      "/opt/s/w/ir/cipd_bin_packages/git"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git xattr info"
+  },
+  {
+    "cmd": [],
+    "name": "Checkout flutter/flutter"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+      "--path",
+      "[CLEANUP]/tmp_tmp_1/flutter sdk",
+      "--url",
+      "https://flutter.googlesource.com/mirrors/flutter"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.git setup",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "fetch",
+      "origin",
+      "--recurse-submodules",
+      "--progress",
+      "--tags"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "env": {
+      "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.git fetch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "checkout",
+      "-f",
+      "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.git checkout",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.read revision",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "clean",
+      "-f",
+      "-d",
+      "-x"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.git clean",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "submodule",
+      "sync"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.submodule sync",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "submodule",
+      "update",
+      "--init",
+      "--recursive"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/flutter.submodule update",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "log",
+      "--pretty=format:%ct",
+      "-n",
+      "1"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git commit time",
+    "timeout": 600.0
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "cmd": [],
+    "name": "Initialize logs"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/flutter_logs_dir"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Ensure [CLEANUP]/flutter_logs_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "",
+      "[CLEANUP]/flutter_logs_dir/noop.txt"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Write noop file",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Dependencies"
+  },
+  {
+    "cmd": [
+      "ideviceinfo",
+      "--key",
+      "ProductType"
+    ],
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Find device type"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "gs://flutter_devicelab/flutter/ci/2d72510e447ab60a9728aeea2362d8be2cbd7789/def",
+      "[CLEANUP]/tmp_tmp_2"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil download artifact"
+  },
+  {
+    "cmd": [
+      "flutter",
+      "doctor",
+      "--verbose"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "flutter doctor",
+    "timeout": 300
+  },
+  {
+    "cmd": [
+      "dart",
+      "pub",
+      "get"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "dart pub get"
+  },
+  {
+    "cmd": [
+      "rm",
+      "-rf",
+      "[HOME]/Library/Developer/Xcode/DerivedData"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Delete mac deriveddata"
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[CLEANUP]/tmp_tmp_3/osx_sdk",
+      "-ensure-file",
+      "infra/tools/mac_toolchain/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "ensure_installed",
+    "~followup_annotations": [
+      "@@@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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/mac_toolchain/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": [
+      "[CLEANUP]/tmp_tmp_3/osx_sdk/mac_toolchain",
+      "install",
+      "-kind",
+      "ios",
+      "-xcode-version",
+      "deadbeef",
+      "-output-dir",
+      "/opt/flutter/xcode/deadbeef/XCode.app",
+      "-cipd-package-prefix",
+      "flutter_internal/ios/xcode"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "install xcode"
+  },
+  {
+    "cmd": [
+      "sudo",
+      "xcode-select",
+      "--switch",
+      "/opt/flutter/xcode/deadbeef/XCode.app"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "select XCode"
+  },
+  {
+    "cmd": [
+      "xcrun",
+      "simctl",
+      "list"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "list simulators"
+  },
+  {
+    "cmd": [
+      "flutter",
+      "doctor",
+      "--verbose"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "flutter doctor (2)",
+    "timeout": 300
+  },
+  {
+    "cmd": [
+      "dart",
+      "bin/test_runner.dart",
+      "test",
+      "-t",
+      "abc",
+      "--results-file",
+      "[CLEANUP]/results_tmp_1/results",
+      "--luci-builder",
+      "ghi",
+      "--task-args",
+      "test",
+      "--task-args",
+      "application-binary-path=[CLEANUP]/tmp_tmp_2/def",
+      "--git-branch",
+      "master"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "run abc",
+    "timeout": 1800,
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@test_stdout@#flaky@@@",
+      "@@@STEP_LOG_LINE@test_stdout@this is a flaky@@@",
+      "@@@STEP_LOG_LINE@test_stdout@flaky: true@@@",
+      "@@@STEP_LOG_END@test_stdout@@@",
+      "@@@STEP_LOG_LINE@test_stderr@@@@",
+      "@@@STEP_LOG_END@test_stderr@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "process logs"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/flutter_logs_dir",
+      "gs://flutter_logs/flutter/2d72510e447ab60a9728aeea2362d8be2cbd7789/abc/00000000-0000-0000-0000-000000001337"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.gsutil upload logs 2d72510e447ab60a9728aeea2362d8be2cbd7789",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@archive logs@https://console.cloud.google.com/storage/browser/flutter_logs/flutter/2d72510e447ab60a9728aeea2362d8be2cbd7789/abc/00000000-0000-0000-0000-000000001337@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "glob",
+      "[CLEANUP]/flutter_logs_dir",
+      "*"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.logs",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@glob@[CLEANUP]/flutter_logs_dir/a.txt@@@",
+      "@@@STEP_LOG_END@glob@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "log links",
+    "~followup_annotations": [
+      "@@@STEP_LINK@myfile.txt@https://storage.googleapis.com/flutter_logs/flutter/2d72510e447ab60a9728aeea2362d8be2cbd7789/abc/00000000-0000-0000-0000-000000001337/myfile.txt@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CLEANUP]/flutter_logs_dir",
+      "--recursive"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "log links.List logs path",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@listdir@[CLEANUP]/flutter_logs_dir/myfile.txt@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Killing Processes"
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "dart"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill dart",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "flutter"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill flutter",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "Chrome"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill Chrome",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "Safari"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill Safari",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "java"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill Safari (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "adb"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Killing Processes.kill Safari (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "top",
+      "-l",
+      "3",
+      "-o",
+      "mem"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "OS info (2)"
+  },
+  {
+    "cmd": [
+      "xattr",
+      "/opt/s/w/ir/cipd_bin_packages/python3"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "python3 xattr info (2)"
+  },
+  {
+    "cmd": [
+      "xattr",
+      "/opt/s/w/ir/cipd_bin_packages/git"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git xattr info (2)"
+  },
+  {
+    "cmd": [
+      "echo",
+      "test run is flaky"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "step is flaky: run abc"
+  },
+  {
+    "cmd": [
+      "sudo",
+      "xcode-select",
+      "--reset"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "reset XCode"
+  },
+  {
+    "cmd": [],
+    "name": "Upload metrics"
+  },
+  {
+    "cmd": [
+      "luci-auth",
+      "token",
+      "-scopes",
+      "https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/datastore",
+      "-lifetime",
+      "3m"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Upload metrics.get access token for default account",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "extra.secret.token.should.not.be.logged",
+      "[CLEANUP]/tmp_tmp_4"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Upload metrics.write metric center token",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "luci-auth",
+      "token",
+      "-lifetime",
+      "3m"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Upload metrics.get access token for default account (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "extra.secret.token.should.not.be.logged",
+      "[CLEANUP]/tmp_tmp_5"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Upload metrics.write cocoon token",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "dart",
+      "bin/test_runner.dart",
+      "upload-metrics",
+      "--test-flaky",
+      "False",
+      "--builder-bucket",
+      "ci",
+      "--git-branch",
+      "master",
+      "--luci-builder",
+      "ghi",
+      "--test-status",
+      "Succeeded",
+      "--service-account-token-file",
+      "[CLEANUP]/tmp_tmp_5"
+    ],
+    "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab",
+    "env": {
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GCP_PROJECT": "flutter-infra",
+      "GIT_BRANCH": "master",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk",
+      "TOKEN_PATH": "[CLEANUP]/tmp_tmp_4"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin",
+        "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "project:ci"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Upload metrics.upload results",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipes/devicelab/devicelab_test_drone.py b/recipes/devicelab/devicelab_test_drone.py
index 0ade68a..3f34d63 100644
--- a/recipes/devicelab/devicelab_test_drone.py
+++ b/recipes/devicelab/devicelab_test_drone.py
@@ -109,24 +109,19 @@
     runner_params.extend(['--git-branch', git_branch])
   test_status = ''
   with api.context(env=env, env_prefixes=env_prefixes, cwd=devicelab_path):
-    api.repo_util.run_flutter_doctor()
+    api.retry.run_flutter_doctor()
     api.step('dart pub get', ['dart', 'pub', 'get'], infra_step=True)
     dep_list = {d['dependency']: d.get('version') for d in deps}
     if 'xcode' not in dep_list:
       with api.context(env=env, env_prefixes=env_prefixes):
-        api.repo_util.run_flutter_doctor()
-        test_runner_command = ['dart', 'bin/test_runner.dart', 'test']
-        test_runner_command.extend(runner_params)
-        try:
-          test_status = api.test_utils.run_test(
-              'run %s' % task_name,
-              test_runner_command,
-              timeout_secs=MAX_TIMEOUT_SECS
-          )
-        finally:
-          debug_after_failure(api, task_name)
-        if test_status == 'flaky':
-          api.test_utils.flaky_step('run %s' % task_name)
+        run_test(api, task_name, runner_params)
+    else:
+      api.os_utils.clean_derived_data()
+      if str(api.swarming.bot_id).startswith('flutter-devicelab'):
+        with api.devicelab_osx_sdk('ios'):
+          with api.context(env=env, env_prefixes=env_prefixes):
+            run_test(api, task_name, runner_params)
+
   with api.context(env=env, env_prefixes=env_prefixes, cwd=devicelab_path):
     uploadResults(
         api, env, env_prefixes, results_path, test_status == 'flaky',
@@ -135,6 +130,21 @@
     )
     uploadMetricsToCas(api, results_path)
 
+def run_test(api, task_name, runner_params):
+  '''Run the devicelab test.'''
+  api.retry.run_flutter_doctor()
+  test_runner_command = ['dart', 'bin/test_runner.dart', 'test']
+  test_runner_command.extend(runner_params)
+  try:
+    test_status = api.test_utils.run_test(
+          'run %s' % task_name,
+          test_runner_command,
+          timeout_secs=MAX_TIMEOUT_SECS
+    )
+  finally:
+    debug_after_failure(api, task_name)
+    if test_status == 'flaky':
+      api.test_utils.flaky_step('run %s' % task_name)
 
 def download_artifact(api, artifact, artifact_destination_dir):
   '''Download pre-build artifact.'''
@@ -360,3 +370,29 @@
           git_ref='refs/heads/master',
       )
   )
+  yield api.test(
+      "mac",
+      api.properties(
+          buildername='Mac_ios abc',
+          task_name='abc',
+          tags=['ios'],
+          dependencies=[{'dependency': 'xcode'}],
+          git_branch='master',
+          **{'$flutter/devicelab_osx_sdk': {
+              'sdk_version': 'deadbeef',
+          }},
+          artifact='def',
+          parent_builder='ghi'
+      ), api.repo_util.flutter_environment_data(checkout_dir=checkout_path),
+      api.platform.name('mac'),
+      api.buildbucket.ci_build(git_ref='refs/heads/master',),
+      api.step_data(
+          'run abc',
+          stdout=api.raw_io.output_text('#flaky\nthis is a flaky\nflaky: true'),
+          retcode=0
+      ), api.swarming.properties(bot_id='flutter-devicelab-mac-1'),
+      api.step_data(
+          'Find device type',
+          stdout=api.raw_io.output_text('iPhone8,1'),
+      )
+  )
diff --git a/recipes/engine/release_builder.expected/basic_linux.json b/recipes/engine/release_builder.expected/basic_linux.json
deleted file mode 100644
index 55318e1..0000000
--- a/recipes/engine/release_builder.expected/basic_linux.json
+++ /dev/null
@@ -1,533 +0,0 @@
-[
-  {
-    "cmd": [],
-    "name": "Checkout flutter/engine"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
-      "--path",
-      "[START_DIR]/engine",
-      "--url",
-      "https://flutter.googlesource.com/mirrors/engine"
-    ],
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Checkout flutter/engine.git setup",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "git",
-      "fetch",
-      "origin",
-      "--recurse-submodules",
-      "--progress",
-      "--tags"
-    ],
-    "cwd": "[START_DIR]/engine",
-    "env": {
-      "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Checkout flutter/engine.git fetch",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "git",
-      "checkout",
-      "-f",
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    ],
-    "cwd": "[START_DIR]/engine",
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Checkout flutter/engine.git checkout",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[START_DIR]/engine",
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Checkout flutter/engine.read revision",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
-      "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "git",
-      "clean",
-      "-f",
-      "-d",
-      "-x"
-    ],
-    "cwd": "[START_DIR]/engine",
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Checkout flutter/engine.git clean",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "git",
-      "submodule",
-      "sync"
-    ],
-    "cwd": "[START_DIR]/engine",
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Checkout flutter/engine.submodule sync",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "git",
-      "submodule",
-      "update",
-      "--init",
-      "--recursive"
-    ],
-    "cwd": "[START_DIR]/engine",
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Checkout flutter/engine.submodule update",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "read ci yaml",
-    "~followup_annotations": [
-      "@@@STEP_LOG_LINE@yaml@@@@",
-      "@@@STEP_LOG_END@yaml@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[START_DIR]/engine/.ci.yaml",
-      "/path/to/tmp/"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "read ci yaml.read",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_END@.ci.yaml@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "RECIPE_MODULE[flutter::yaml]/resources/parse_yaml.py",
-      "--yaml_file",
-      "[START_DIR]/engine/.ci.yaml",
-      "--json_file",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "read ci yaml.parse",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"targets\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"linux one\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"$flutter/osx_sdk\": \"{\\\"sdk_version\\\": \\\"14a5294e\\\"}\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"release_build\": true@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"recipe\": \"engine/something\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  ]@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch builds"
-  },
-  {
-    "cmd": [
-      "bb",
-      "batch",
-      "-host",
-      "cr-buildbucket.appspot.com"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}, \"build\": {\"name\": \"linux one\", \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}}, \"recipe\": \"engine/something\"}, \"environment\": \"Staging\", \"gclient_variables\": {}, \"recipe\": \"engine/something\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
-      "@@@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@        \"id\": \"8945511751514863186\"@@@",
-      "@@@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@request@{@@@",
-      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@request@    {@@@",
-      "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
-      "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"bucket\": \"try\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"project\": \"proj\"@@@",
-      "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/main\"@@@",
-      "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"experimental\": \"NO\", @@@",
-      "@@@STEP_LOG_LINE@request@        \"experiments\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"luci.buildbucket.parent_tracking\": false@@@",
-      "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", @@@",
-      "@@@STEP_LOG_LINE@request@        \"gerritChanges\": [@@@",
-      "@@@STEP_LOG_LINE@request@          {@@@",
-      "@@@STEP_LOG_LINE@request@            \"change\": \"123456\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"host\": \"flutter-review.googlesource.com\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"patchset\": \"7\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"project\": \"mirrors/engine\"@@@",
-      "@@@STEP_LOG_LINE@request@          }@@@",
-      "@@@STEP_LOG_LINE@request@        ], @@@",
-      "@@@STEP_LOG_LINE@request@        \"gitilesCommit\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"host\": \"flutter.googlesource.com\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
-      "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
-      "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"$flutter/osx_sdk\": {@@@",
-      "@@@STEP_LOG_LINE@request@            \"sdk_version\": \"14a5294e\"@@@",
-      "@@@STEP_LOG_LINE@request@          }, @@@",
-      "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
-      "@@@STEP_LOG_LINE@request@            \"name\": \"linux one\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@request@              \"$flutter/osx_sdk\": {@@@",
-      "@@@STEP_LOG_LINE@request@                \"sdk_version\": \"14a5294e\"@@@",
-      "@@@STEP_LOG_LINE@request@              }@@@",
-      "@@@STEP_LOG_LINE@request@            }, @@@",
-      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine/something\"@@@",
-      "@@@STEP_LOG_LINE@request@          }, @@@",
-      "@@@STEP_LOG_LINE@request@          \"environment\": \"Staging\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
-      "@@@STEP_LOG_LINE@request@          \"recipe\": \"engine/something\"@@@",
-      "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
-      "@@@STEP_LOG_LINE@request@        \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@request@          \"parentRunId\": \"fake-task-id\"@@@",
-      "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"tags\": [@@@",
-      "@@@STEP_LOG_LINE@request@          {@@@",
-      "@@@STEP_LOG_LINE@request@            \"key\": \"cq_experimental\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"value\": \"false\"@@@",
-      "@@@STEP_LOG_LINE@request@          }, @@@",
-      "@@@STEP_LOG_LINE@request@          {@@@",
-      "@@@STEP_LOG_LINE@request@            \"key\": \"parent_buildbucket_id\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"value\": \"8945511751514863184\"@@@",
-      "@@@STEP_LOG_LINE@request@          }, @@@",
-      "@@@STEP_LOG_LINE@request@          {@@@",
-      "@@@STEP_LOG_LINE@request@            \"key\": \"user_agent\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"value\": \"recipe\"@@@",
-      "@@@STEP_LOG_LINE@request@          }@@@",
-      "@@@STEP_LOG_LINE@request@        ]@@@",
-      "@@@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@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "collect builds"
-  },
-  {
-    "cmd": [],
-    "name": "collect builds.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "bb",
-      "collect",
-      "-host",
-      "cr-buildbucket.appspot.com",
-      "-interval",
-      "20s",
-      "8945511751514863186"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "collect builds.collect.wait",
-    "timeout": 86400,
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "bb",
-      "batch",
-      "-host",
-      "cr-buildbucket.appspot.com"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "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\"}}]}",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@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@@@",
-      "@@@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@}@@@",
-      "@@@STEP_LOG_END@request@@@",
-      "@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "display builds"
-  },
-  {
-    "cmd": [],
-    "name": "display builds.linux one",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@"
-    ]
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipes/engine/release_builder.py b/recipes/engine/release_builder.py
deleted file mode 100644
index ec8866b..0000000
--- a/recipes/engine/release_builder.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# Copyright 2022 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Orchestrator recipe that runs subbuilds required to release engine.
-#
-# This recipe reads <engine_checkout>/.ci_yaml, and for every target
-# marked with release_build: true, and spawens a subbuild.
-
-
-import json
-from contextlib import contextmanager
-
-from PB.recipes.flutter.engine.engine import InputProperties
-from PB.recipes.flutter.engine.engine import EnvProperties
-
-from google.protobuf import struct_pb2
-
-DEPS = [
-  'flutter/yaml',
-  'flutter/display_util',
-  'flutter/repo_util',
-  'flutter/shard_util_v2',
-  'recipe_engine/buildbucket',
-  'recipe_engine/json',
-  'recipe_engine/path',
-  'recipe_engine/platform',
-  'recipe_engine/properties',
-  'recipe_engine/step',
-]
-
-GIT_REPO = \
-  'https://flutter.googlesource.com/mirrors/engine'
-
-
-PROPERTIES = InputProperties
-ENV_PROPERTIES = EnvProperties
-
-
-def RunSteps(api, properties, env_properties):
-  repository = 'engine'
-  checkout_path = api.path['start_dir'].join(repository)
-  api.repo_util.checkout(
-    repository,
-    checkout_path=checkout_path,
-    url=api.properties.get('git_url'),
-    ref=api.properties.get('git_ref')
-  )
-
-  ci_yaml_path = checkout_path.join('.ci.yaml')
-  ci_yaml = api.yaml.read('read ci yaml', ci_yaml_path, api.json.output())
-
-  # Foreach target defined in .ci.yaml, if it contains
-  # release_build: True, then spawn a subbuild.
-  tasks = {}
-  build_results = []
-  with api.step.nest('launch builds') as presentation:
-    for target in ci_yaml.json.output['targets']:
-      if target.get("properties", {}).get("release_build", False) and (
-          target["name"].lower().startswith(api.platform.name)):
-        target = api.shard_util_v2.pre_process_properties(target)
-        tasks.update(api.shard_util_v2.schedule(
-          [target, ], target["recipe"], presentation))
-  with api.step.nest('collect builds') as presentation:
-    build_results = api.shard_util_v2.collect(tasks, presentation)
-
-  api.display_util.display_subbuilds(
-    step_name='display builds',
-    subbuilds=build_results,
-    raise_on_failure=True,
-  )
-
-
-def GenTests(api):
-  try_subbuild1 = api.shard_util_v2.try_build_message(
-    build_id=8945511751514863186,
-    builder="builder-subbuild1",
-    output_props={"test_orchestration_inputs_hash": "abc"},
-    status="SUCCESS",
-  )
-  tasks_dict = {'targets': [
-    {'name': 'linux one', 'recipe': 'engine/something',
-     'properties': {'release_build': True, '$flutter/osx_sdk': '{"sdk_version": "14a5294e"}'}
-    }]
-  }
-  yield api.test(
-    'basic_linux',
-    api.platform.name('linux'),
-    api.properties(environment='Staging'),
-    api.buildbucket.try_build(
-      project='proj',
-      builder='try-builder',
-      git_repo='https://flutter.googlesource.com/mirrors/engine',
-      revision='a' * 40,
-      build_number=123,
-    ),
-    api.shard_util_v2.child_build_steps(
-      subbuilds=[try_subbuild1],
-      launch_step="launch builds",
-      collect_step="collect builds",
-    ),
-    api.step_data('read ci yaml.parse', api.json.output(tasks_dict))
-  )
diff --git a/recipes/engine/web_engine.expected/basic.json b/recipes/engine/web_engine.expected/basic.json
index 88c3359..a7321fd 100644
--- a/recipes/engine/web_engine.expected/basic.json
+++ b/recipes/engine/web_engine.expected/basic.json
@@ -540,7 +540,8 @@
       "--goma",
       "--build-canvaskit",
       "--web",
-      "--runtime-mode=release"
+      "--runtime-mode=release",
+      "--no-goma"
     ],
     "cwd": "[CACHE]/builder",
     "env": {
@@ -582,7 +583,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gn --build-canvaskit --web --runtime-mode=release"
+    "name": "gn --build-canvaskit --web --runtime-mode=release --no-goma"
   },
   {
     "cmd": [],
@@ -1972,7 +1973,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"build\": {\"command_args\": [\"test\", \"--browser=chrome\", \"--require-skia-gold\"], \"command_name\": \"chrome-unit-linux\", \"inherited_dependencies\": [], \"local_engine_cas_hash\": \"\", \"name\": \"chrome-unit-linux\", \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"}, \"clobber\": true, \"gclient_variables\": {}, \"recipe\": \"engine/web_engine_drone\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}, {\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"build\": {\"command_args\": [\"test\", \"--browser=chrome\", \"--require-skia-gold\", \"--use-local-canvaskit\"], \"command_name\": \"chrome-unit-linux-canvaskit\", \"inherited_dependencies\": [], \"local_engine_cas_hash\": \"\", \"name\": \"chrome-unit-linux-canvaskit\", \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"}, \"clobber\": true, \"gclient_variables\": {}, \"recipe\": \"engine/web_engine_drone\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133a\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}, {\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"build\": {\"command_args\": [\"test\", \"--browser=firefox\"], \"command_name\": \"firefox-unit-linux\", \"inherited_dependencies\": [], \"local_engine_cas_hash\": \"\", \"name\": \"firefox-unit-linux\", \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"}, \"clobber\": true, \"gclient_variables\": {}, \"recipe\": \"engine/web_engine_drone\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133d\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"command_args\": [\"test\", \"--browser=chrome\", \"--require-skia-gold\"], \"command_name\": \"chrome-unit-linux\", \"inherited_dependencies\": [], \"local_engine_cas_hash\": \"\", \"name\": \"chrome-unit-linux\", \"recipe\": \"engine/web_engine_drone\", \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"}, \"clobber\": true, \"gclient_variables\": {}, \"recipe\": \"engine/web_engine_drone\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}, {\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"command_args\": [\"test\", \"--browser=chrome\", \"--require-skia-gold\", \"--use-local-canvaskit\"], \"command_name\": \"chrome-unit-linux-canvaskit\", \"inherited_dependencies\": [], \"local_engine_cas_hash\": \"\", \"name\": \"chrome-unit-linux-canvaskit\", \"recipe\": \"engine/web_engine_drone\", \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"}, \"clobber\": true, \"gclient_variables\": {}, \"recipe\": \"engine/web_engine_drone\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133a\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}, {\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"command_args\": [\"test\", \"--browser=chrome\", \"--require-skia-gold\", \"--wasm\"], \"command_name\": \"chrome-unit-linux-wasm\", \"inherited_dependencies\": [], \"local_engine_cas_hash\": \"\", \"name\": \"chrome-unit-linux-wasm\", \"recipe\": \"engine/web_engine_drone\", \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"}, \"clobber\": true, \"gclient_variables\": {}, \"recipe\": \"engine/web_engine_drone\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133d\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}, {\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"command_args\": [\"test\", \"--browser=firefox\"], \"command_name\": \"firefox-unit-linux\", \"inherited_dependencies\": [], \"local_engine_cas_hash\": \"\", \"name\": \"firefox-unit-linux\", \"recipe\": \"engine/web_engine_drone\", \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"}, \"clobber\": true, \"gclient_variables\": {}, \"recipe\": \"engine/web_engine_drone\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001340\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -2006,6 +2007,16 @@
       "@@@STEP_LOG_LINE@json.output@        }, @@@",
       "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514002\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }, @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514003\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -2041,7 +2052,7 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
       "@@@STEP_LOG_LINE@request@            \"command_args\": [@@@",
@@ -2053,6 +2064,7 @@
       "@@@STEP_LOG_LINE@request@            \"inherited_dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@            \"local_engine_cas_hash\": \"\", @@@",
       "@@@STEP_LOG_LINE@request@            \"name\": \"chrome-unit-linux\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine/web_engine_drone\", @@@",
       "@@@STEP_LOG_LINE@request@            \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"clobber\": true, @@@",
@@ -2108,7 +2120,7 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
       "@@@STEP_LOG_LINE@request@            \"command_args\": [@@@",
@@ -2121,6 +2133,7 @@
       "@@@STEP_LOG_LINE@request@            \"inherited_dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@            \"local_engine_cas_hash\": \"\", @@@",
       "@@@STEP_LOG_LINE@request@            \"name\": \"chrome-unit-linux-canvaskit\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine/web_engine_drone\", @@@",
       "@@@STEP_LOG_LINE@request@            \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"clobber\": true, @@@",
@@ -2176,17 +2189,20 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
       "@@@STEP_LOG_LINE@request@            \"command_args\": [@@@",
       "@@@STEP_LOG_LINE@request@              \"test\", @@@",
-      "@@@STEP_LOG_LINE@request@              \"--browser=firefox\"@@@",
+      "@@@STEP_LOG_LINE@request@              \"--browser=chrome\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"--require-skia-gold\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"--wasm\"@@@",
       "@@@STEP_LOG_LINE@request@            ], @@@",
-      "@@@STEP_LOG_LINE@request@            \"command_name\": \"firefox-unit-linux\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"command_name\": \"chrome-unit-linux-wasm\", @@@",
       "@@@STEP_LOG_LINE@request@            \"inherited_dependencies\": [], @@@",
       "@@@STEP_LOG_LINE@request@            \"local_engine_cas_hash\": \"\", @@@",
-      "@@@STEP_LOG_LINE@request@            \"name\": \"firefox-unit-linux\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"name\": \"chrome-unit-linux-wasm\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine/web_engine_drone\", @@@",
       "@@@STEP_LOG_LINE@request@            \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"clobber\": true, @@@",
@@ -2212,13 +2228,81 @@
       "@@@STEP_LOG_LINE@request@          }@@@",
       "@@@STEP_LOG_LINE@request@        ]@@@",
       "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }, @@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"experimental\": \"NO\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"experiments\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"luci.buildbucket.parent_tracking\": false@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"change\": \"123456\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"host\": \"flutter-review.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"project\": \"mirrors/engine\"@@@",
+      "@@@STEP_LOG_LINE@request@          }@@@",
+      "@@@STEP_LOG_LINE@request@        ], @@@",
+      "@@@STEP_LOG_LINE@request@        \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"host\": \"flutter.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
+      "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"command_args\": [@@@",
+      "@@@STEP_LOG_LINE@request@              \"test\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"--browser=firefox\"@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
+      "@@@STEP_LOG_LINE@request@            \"command_name\": \"firefox-unit-linux\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"inherited_dependencies\": [], @@@",
+      "@@@STEP_LOG_LINE@request@            \"local_engine_cas_hash\": \"\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"name\": \"firefox-unit-linux\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine/web_engine_drone\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"wasm_release_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          \"clobber\": true, @@@",
+      "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
+      "@@@STEP_LOG_LINE@request@          \"recipe\": \"engine/web_engine_drone\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001340\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"parentRunId\": \"fake-task-id\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"cq_experimental\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"parent_buildbucket_id\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"user_agent\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"recipe\"@@@",
+      "@@@STEP_LOG_LINE@request@          }@@@",
+      "@@@STEP_LOG_LINE@request@        ]@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
       "@@@STEP_LOG_LINE@request@    }@@@",
       "@@@STEP_LOG_LINE@request@  ]@@@",
       "@@@STEP_LOG_LINE@request@}@@@",
       "@@@STEP_LOG_END@request@@@",
       "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@",
       "@@@STEP_LINK@8922054662172514001@https://cr-buildbucket.appspot.com/build/8922054662172514001@@@",
-      "@@@STEP_LINK@8922054662172514002@https://cr-buildbucket.appspot.com/build/8922054662172514002@@@"
+      "@@@STEP_LINK@8922054662172514002@https://cr-buildbucket.appspot.com/build/8922054662172514002@@@",
+      "@@@STEP_LINK@8922054662172514003@https://cr-buildbucket.appspot.com/build/8922054662172514003@@@"
     ]
   },
   {
@@ -2242,7 +2326,8 @@
       "20s",
       "8922054662172514000",
       "8922054662172514001",
-      "8922054662172514002"
+      "8922054662172514002",
+      "8922054662172514003"
     ],
     "cwd": "[CACHE]/builder",
     "env": {
@@ -2338,7 +2423,7 @@
       }
     },
     "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\": \"8922054662172514000\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8922054662172514001\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8922054662172514002\"}}]}",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8922054662172514000\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8922054662172514001\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8922054662172514002\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8922054662172514003\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -2360,6 +2445,12 @@
       "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514002\", @@@",
       "@@@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@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514003\", @@@",
+      "@@@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@}@@@",
@@ -2383,13 +2474,20 @@
       "@@@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\": \"8922054662172514002\"@@@",
       "@@@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\": \"8922054662172514003\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
       "@@@STEP_LOG_LINE@request@    }@@@",
       "@@@STEP_LOG_LINE@request@  ]@@@",
       "@@@STEP_LOG_LINE@request@}@@@",
       "@@@STEP_LOG_END@request@@@",
       "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@",
       "@@@STEP_LINK@8922054662172514001@https://cr-buildbucket.appspot.com/build/8922054662172514001@@@",
-      "@@@STEP_LINK@8922054662172514002@https://cr-buildbucket.appspot.com/build/8922054662172514002@@@"
+      "@@@STEP_LINK@8922054662172514002@https://cr-buildbucket.appspot.com/build/8922054662172514002@@@",
+      "@@@STEP_LINK@8922054662172514003@https://cr-buildbucket.appspot.com/build/8922054662172514003@@@"
     ]
   },
   {
@@ -2414,7 +2512,7 @@
   },
   {
     "cmd": [],
-    "name": "display builds.firefox-unit-linux",
+    "name": "display builds.chrome-unit-linux-wasm",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@8922054662172514002@https://cr-buildbucket.appspot.com/build/8922054662172514002@@@"
@@ -2422,6 +2520,14 @@
   },
   {
     "cmd": [],
+    "name": "display builds.firefox-unit-linux",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@8922054662172514003@https://cr-buildbucket.appspot.com/build/8922054662172514003@@@"
+    ]
+  },
+  {
+    "cmd": [],
     "name": "Killing Processes"
   },
   {
diff --git a/recipes/engine/web_engine.py b/recipes/engine/web_engine.py
index 54c3332..e81fd5a 100644
--- a/recipes/engine/web_engine.py
+++ b/recipes/engine/web_engine.py
@@ -86,7 +86,8 @@
     cas_hash = ''
     builds = []
     if api.platform.is_linux:
-      api.build_util.run_gn(['--build-canvaskit', '--web', '--runtime-mode=release'], checkout)
+      api.build_util.run_gn(['--build-canvaskit', '--web', '--runtime-mode=release', '--no-goma'],
+                            checkout)
       api.build_util.build('wasm_release', checkout, [])
       wasm_cas_hash = api.shard_util_v2.archive_full_build(
               checkout.join('out', 'wasm_release'),
@@ -102,7 +103,7 @@
       web_engine_analysis.append('analyze')
       api.step('web engine analysis', web_engine_analysis)
       with api.step.nest('launch builds') as presentation:
-        tasks = api.shard_util_v2.schedule(targets, 'engine/web_engine_drone', presentation)
+        tasks = api.shard_util_v2.schedule(targets, presentation)
       with api.step.nest('collect builds') as presentation:
         build_results = api.shard_util_v2.collect(tasks, presentation)
       api.display_util.display_subbuilds(
@@ -148,6 +149,7 @@
   properties['name'] = properties['command_name']
   # These are the felt commands which will be used.
   properties['command_args'] = ['test', '--browser=chrome', '--require-skia-gold']
+  properties['recipe'] = 'engine/web_engine_drone'
   targets.append(properties)
 
   # For running Chrome Unit tests with CanvasKit
@@ -159,6 +161,19 @@
       'test', '--browser=chrome', '--require-skia-gold',
       '--use-local-canvaskit'
   ]
+  properties['recipe'] = 'engine/web_engine_drone'
+  targets.append(properties)
+
+  # For running Chrome Unit tests compiled to wasm:
+  properties = copy.deepcopy(drone_props)
+  properties['command_name'] = 'chrome-unit-linux-wasm'
+  properties['name'] = properties['command_name']
+  # These are the felt commands which will be used.
+  properties['command_args'] = [
+      'test', '--browser=chrome', '--require-skia-gold',
+      '--wasm'
+  ]
+  properties['recipe'] = 'engine/web_engine_drone'
   targets.append(properties)
 
   # For running Firefox Unit tests:
@@ -167,6 +182,7 @@
   properties['name'] = properties['command_name']
   # These are the felt commands which will be used.
   properties['command_args'] = ['test', '--browser=firefox']
+  properties['recipe'] = 'engine/web_engine_drone'
   targets.append(properties)
   return targets
 
@@ -212,4 +228,3 @@
           git_ref='refs/heads/main'
      ),
   )
-
diff --git a/recipes/engine/web_engine_framework.expected/linux-pre-submit.json b/recipes/engine/web_engine_framework.expected/linux-pre-submit.json
index 21ee72a..d6e9a27 100644
--- a/recipes/engine/web_engine_framework.expected/linux-pre-submit.json
+++ b/recipes/engine/web_engine_framework.expected/linux-pre-submit.json
@@ -586,9 +586,8 @@
       "python3",
       "[CACHE]/builder/src/flutter/tools/gn",
       "--goma",
-      "--unoptimized",
-      "--full-dart-sdk",
-      "--prebuilt-dart-sdk"
+      "--web",
+      "--runtime-mode=release"
     ],
     "cwd": "[CACHE]/builder",
     "env": {
@@ -630,7 +629,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gn --unoptimized --full-dart-sdk --prebuilt-dart-sdk"
+    "name": "gn --web --runtime-mode=release"
   },
   {
     "cmd": [],
@@ -938,7 +937,7 @@
       "-j",
       "200",
       "-C",
-      "[CACHE]/builder/src/out/host_debug_unopt"
+      "[CACHE]/builder/src/out/wasm_release"
     ],
     "cwd": "[CACHE]/builder",
     "env": {
@@ -984,7 +983,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "build host_debug_unopt"
+    "name": "build wasm_release"
   },
   {
     "cmd": [],
@@ -1586,8 +1585,8 @@
       "--json-output",
       "/path/to/tmp/json",
       "copytree",
-      "[CACHE]/builder/src/out/host_debug_unopt",
-      "[CLEANUP]/cas-directory_tmp_1/host_debug_unopt"
+      "[CACHE]/builder/src/out/wasm_release",
+      "[CLEANUP]/cas-directory_tmp_1/out/wasm_release"
     ],
     "cwd": "[CACHE]/builder",
     "env": {
@@ -1629,7 +1628,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy host_debug_unopt"
+    "name": "Copy wasm_release"
   },
   {
     "cmd": [
@@ -1639,7 +1638,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "copytree",
-      "[CACHE]/builder/src/out/host_debug_unopt",
+      "[CACHE]/builder/src/flutter",
       "[CLEANUP]/cas-directory_tmp_1/flutter"
     ],
     "cwd": "[CACHE]/builder",
@@ -1924,7 +1923,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Archive Flutter Engine Test CAS",
+    "name": "Archive Flutter Web SDK CAS",
     "~followup_annotations": [
       "@@@STEP_LINK@CAS UI@https://cas-viewer.appspot.com/projects/example-cas-server/instances/default_instance/blobs/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0/tree@@@"
     ]
@@ -2666,7 +2665,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"flutter\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"priority\": 25, \"properties\": {\"build\": {\"name\": \"web_tests-0\", \"properties\": {\"dependencies\": [{\"dependency\": \"chrome_and_driver\", \"version\": \"version:96.2\"}], \"git_ref\": \"b6efc758213fdfffee1234465\", \"git_url\": \"https://github.com/flutter/flutter\", \"local_engine_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", \"shard\": \"web_tests\", \"subshard\": \"0\", \"task_name\": \"web_tests-0\"}}, \"clobber\": true, \"dependencies\": [{\"dependency\": \"chrome_and_driver\", \"version\": \"version:96.2\"}], \"gclient_variables\": {}, \"git_branch\": \"main\", \"git_ref\": \"b6efc758213fdfffee1234465\", \"git_url\": \"https://github.com/flutter/flutter\", \"goma_jobs\": \"200\", \"local_engine_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", \"recipe\": \"flutter/flutter_drone\", \"shard\": \"web_tests\", \"subshard\": \"0\", \"subshards\": [\"0\", \"1_last\"], \"task_name\": \"web_tests-0\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}, {\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"flutter\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"priority\": 25, \"properties\": {\"build\": {\"name\": \"web_tests-1_last\", \"properties\": {\"dependencies\": [{\"dependency\": \"chrome_and_driver\", \"version\": \"version:96.2\"}], \"git_ref\": \"b6efc758213fdfffee1234465\", \"git_url\": \"https://github.com/flutter/flutter\", \"local_engine_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", \"shard\": \"web_tests\", \"subshard\": \"1_last\", \"task_name\": \"web_tests-1_last\"}}, \"clobber\": true, \"dependencies\": [{\"dependency\": \"chrome_and_driver\", \"version\": \"version:96.2\"}], \"gclient_variables\": {}, \"git_branch\": \"main\", \"git_ref\": \"b6efc758213fdfffee1234465\", \"git_url\": \"https://github.com/flutter/flutter\", \"goma_jobs\": \"200\", \"local_engine_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", \"recipe\": \"flutter/flutter_drone\", \"shard\": \"web_tests\", \"subshard\": \"1_last\", \"subshards\": [\"0\", \"1_last\"], \"task_name\": \"web_tests-1_last\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133a\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"flutter\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"priority\": 30, \"properties\": {\"build\": {\"drone_dimensions\": [], \"name\": \"web_tests-0\", \"properties\": {\"dependencies\": [{\"dependency\": \"chrome_and_driver\", \"version\": \"version:96.2\"}], \"git_ref\": \"b6efc758213fdfffee1234465\", \"git_url\": \"https://github.com/flutter/flutter\", \"local_web_sdk_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", \"shard\": \"web_tests\", \"subshard\": \"0\", \"task_name\": \"web_tests-0\"}, \"recipe\": \"flutter/flutter_drone\"}, \"clobber\": true, \"dependencies\": [{\"dependency\": \"chrome_and_driver\", \"version\": \"version:96.2\"}], \"gclient_variables\": {}, \"git_branch\": \"main\", \"git_ref\": \"b6efc758213fdfffee1234465\", \"git_url\": \"https://github.com/flutter/flutter\", \"goma_jobs\": \"200\", \"local_web_sdk_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", \"recipe\": \"flutter/flutter_drone\", \"shard\": \"web_tests\", \"subshard\": \"0\", \"subshards\": [\"0\", \"1_last\"], \"task_name\": \"web_tests-0\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}, {\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"flutter\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"priority\": 30, \"properties\": {\"build\": {\"drone_dimensions\": [], \"name\": \"web_tests-1_last\", \"properties\": {\"dependencies\": [{\"dependency\": \"chrome_and_driver\", \"version\": \"version:96.2\"}], \"git_ref\": \"b6efc758213fdfffee1234465\", \"git_url\": \"https://github.com/flutter/flutter\", \"local_web_sdk_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", \"shard\": \"web_tests\", \"subshard\": \"1_last\", \"task_name\": \"web_tests-1_last\"}, \"recipe\": \"flutter/flutter_drone\"}, \"clobber\": true, \"dependencies\": [{\"dependency\": \"chrome_and_driver\", \"version\": \"version:96.2\"}], \"gclient_variables\": {}, \"git_branch\": \"main\", \"git_ref\": \"b6efc758213fdfffee1234465\", \"git_url\": \"https://github.com/flutter/flutter\", \"goma_jobs\": \"200\", \"local_web_sdk_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", \"recipe\": \"flutter/flutter_drone\", \"shard\": \"web_tests\", \"subshard\": \"1_last\", \"subshards\": [\"0\", \"1_last\"], \"task_name\": \"web_tests-1_last\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133a\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -2719,9 +2718,10 @@
       "@@@STEP_LOG_LINE@request@            \"project\": \"mirrors/engine\"@@@",
       "@@@STEP_LOG_LINE@request@          }@@@",
       "@@@STEP_LOG_LINE@request@        ], @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"drone_dimensions\": [], @@@",
       "@@@STEP_LOG_LINE@request@            \"name\": \"web_tests-0\", @@@",
       "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"dependencies\": [@@@",
@@ -2732,11 +2732,12 @@
       "@@@STEP_LOG_LINE@request@              ], @@@",
       "@@@STEP_LOG_LINE@request@              \"git_ref\": \"b6efc758213fdfffee1234465\", @@@",
       "@@@STEP_LOG_LINE@request@              \"git_url\": \"https://github.com/flutter/flutter\", @@@",
-      "@@@STEP_LOG_LINE@request@              \"local_engine_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"local_web_sdk_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", @@@",
       "@@@STEP_LOG_LINE@request@              \"shard\": \"web_tests\", @@@",
       "@@@STEP_LOG_LINE@request@              \"subshard\": \"0\", @@@",
       "@@@STEP_LOG_LINE@request@              \"task_name\": \"web_tests-0\"@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"flutter/flutter_drone\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"clobber\": true, @@@",
       "@@@STEP_LOG_LINE@request@          \"dependencies\": [@@@",
@@ -2750,7 +2751,7 @@
       "@@@STEP_LOG_LINE@request@          \"git_ref\": \"b6efc758213fdfffee1234465\", @@@",
       "@@@STEP_LOG_LINE@request@          \"git_url\": \"https://github.com/flutter/flutter\", @@@",
       "@@@STEP_LOG_LINE@request@          \"goma_jobs\": \"200\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"local_engine_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"local_web_sdk_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", @@@",
       "@@@STEP_LOG_LINE@request@          \"recipe\": \"flutter/flutter_drone\", @@@",
       "@@@STEP_LOG_LINE@request@          \"shard\": \"web_tests\", @@@",
       "@@@STEP_LOG_LINE@request@          \"subshard\": \"0\", @@@",
@@ -2803,9 +2804,10 @@
       "@@@STEP_LOG_LINE@request@            \"project\": \"mirrors/engine\"@@@",
       "@@@STEP_LOG_LINE@request@          }@@@",
       "@@@STEP_LOG_LINE@request@        ], @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"drone_dimensions\": [], @@@",
       "@@@STEP_LOG_LINE@request@            \"name\": \"web_tests-1_last\", @@@",
       "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"dependencies\": [@@@",
@@ -2816,11 +2818,12 @@
       "@@@STEP_LOG_LINE@request@              ], @@@",
       "@@@STEP_LOG_LINE@request@              \"git_ref\": \"b6efc758213fdfffee1234465\", @@@",
       "@@@STEP_LOG_LINE@request@              \"git_url\": \"https://github.com/flutter/flutter\", @@@",
-      "@@@STEP_LOG_LINE@request@              \"local_engine_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"local_web_sdk_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", @@@",
       "@@@STEP_LOG_LINE@request@              \"shard\": \"web_tests\", @@@",
       "@@@STEP_LOG_LINE@request@              \"subshard\": \"1_last\", @@@",
       "@@@STEP_LOG_LINE@request@              \"task_name\": \"web_tests-1_last\"@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"flutter/flutter_drone\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"clobber\": true, @@@",
       "@@@STEP_LOG_LINE@request@          \"dependencies\": [@@@",
@@ -2834,7 +2837,7 @@
       "@@@STEP_LOG_LINE@request@          \"git_ref\": \"b6efc758213fdfffee1234465\", @@@",
       "@@@STEP_LOG_LINE@request@          \"git_url\": \"https://github.com/flutter/flutter\", @@@",
       "@@@STEP_LOG_LINE@request@          \"goma_jobs\": \"200\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"local_engine_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"local_web_sdk_cas_hash\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\", @@@",
       "@@@STEP_LOG_LINE@request@          \"recipe\": \"flutter/flutter_drone\", @@@",
       "@@@STEP_LOG_LINE@request@          \"shard\": \"web_tests\", @@@",
       "@@@STEP_LOG_LINE@request@          \"subshard\": \"1_last\", @@@",
diff --git a/recipes/engine/web_engine_framework.py b/recipes/engine/web_engine_framework.py
index 0d79adc..30728de 100644
--- a/recipes/engine/web_engine_framework.py
+++ b/recipes/engine/web_engine_framework.py
@@ -42,12 +42,12 @@
   checkout = GetCheckoutPath(api)
   build_dir = checkout.join('out', target)
   cas_dir = api.path.mkdtemp('cas-directory')
-  cas_engine = cas_dir.join(target)
-  api.file.copytree('Copy host_debug_unopt', build_dir, cas_engine)
+  cas_out = cas_dir.join('out', target)
+  api.file.copytree('Copy wasm_release', build_dir, cas_out)
   source_dir = checkout.join('flutter')
   cas_source = cas_dir.join('flutter')
-  api.file.copytree('Copy source', build_dir, cas_source)
-  return api.cas_util.upload(cas_dir, step_name='Archive Flutter Engine Test CAS')
+  api.file.copytree('Copy source', source_dir, cas_source)
+  return api.cas_util.upload(cas_dir, step_name='Archive Flutter Web SDK CAS')
 
 
 def GetCheckoutPath(api):
@@ -74,8 +74,8 @@
 
     api.gclient.runhooks()
 
-    target_name = 'host_debug_unopt'
-    gn_flags = ['--unoptimized', '--full-dart-sdk', '--prebuilt-dart-sdk']
+    target_name = 'wasm_release'
+    gn_flags = ['--web', '--runtime-mode=release']
 
     api.build_util.run_gn(gn_flags, checkout)
     api.build_util.build(target_name, checkout, [])
@@ -121,7 +121,7 @@
     # side is kept in `ref`.
     targets = generate_targets(api, cas_hash, ref.strip(), url, deps)
     with api.step.nest('launch builds') as presentation:
-       tasks = api.shard_util_v2.schedule(targets, 'flutter/flutter_drone', presentation)
+       tasks = api.shard_util_v2.schedule(targets, presentation)
     with api.step.nest('collect builds') as presentation:
        build_results = api.shard_util_v2.collect(tasks, presentation)
     api.display_util.display_subbuilds(
@@ -143,11 +143,18 @@
         'shard': shard,
         'dependencies': [api.shard_util_v2.unfreeze_dict(dep) for dep in deps],
         'task_name': task_name,
-        'local_engine_cas_hash': cas_hash,
+        'local_web_sdk_cas_hash': cas_hash,
     }
     drone_props['git_url'] = url
     drone_props['git_ref'] = ref
-    targets.append({'name': task_name, 'properties': drone_props})
+    targets.append(
+        {
+            'name': task_name,
+            'properties': drone_props,
+            'recipe': 'flutter/flutter_drone',
+            'drone_dimensions': api.properties.get('drone_dimensions', []),
+        }
+    )
   return targets
 
 
diff --git a/recipes/engine_v2/builder.expected/basic.json b/recipes/engine_v2/builder.expected/basic.json
index f5b771b..2b4730f 100644
--- a/recipes/engine_v2/builder.expected/basic.json
+++ b/recipes/engine_v2/builder.expected/basic.json
@@ -265,6 +265,996 @@
   },
   {
     "cmd": [
+      "dart",
+      "pub",
+      "get"
+    ],
+    "cwd": "[CACHE]/builder/src",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "dart pub get"
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/src/script1.sh",
+      "[CACHE]/builder/src/dev/felt.dart",
+      "--argument1"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "generator1"
+  },
+  {
+    "cmd": [],
+    "name": "Initialize logs"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/flutter_logs_dir"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Ensure [CLEANUP]/flutter_logs_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "",
+      "[CLEANUP]/flutter_logs_dir/noop.txt"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Write noop file",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/src/myscript.sh",
+      "param1",
+      "param2"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "test: mytest"
+  },
+  {
+    "cmd": [],
+    "name": "process logs"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/flutter_logs_dir",
+      "gs://flutter_logs/flutter/abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd/mytest/00000000-0000-0000-0000-000000001337"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.gsutil upload logs abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@archive logs@https://console.cloud.google.com/storage/browser/flutter_logs/flutter/abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd/mytest/00000000-0000-0000-0000-000000001337@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "glob",
+      "[CLEANUP]/flutter_logs_dir",
+      "*"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.logs",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@glob@[CLEANUP]/flutter_logs_dir/a.txt@@@",
+      "@@@STEP_LOG_END@glob@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "log links",
+    "~followup_annotations": [
+      "@@@STEP_LINK@myfile.txt@https://storage.googleapis.com/flutter_logs/flutter/abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd/mytest/00000000-0000-0000-0000-000000001337/myfile.txt@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CLEANUP]/flutter_logs_dir",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "log links.List logs path",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@listdir@[CLEANUP]/flutter_logs_dir/myfile.txt@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Expand directory",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@listdir@[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar@@@",
+      "@@@STEP_LOG_LINE@listdir@[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git branch",
+    "~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",
+      "[CLEANUP]/tmp_tmp_1/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
+      "[CLEANUP]/tmp_tmp_1/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_1/*",
+      "gs://flutter_infra_release/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip to gs://flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_2/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar",
+      "[CLEANUP]/tmp_tmp_2/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_2/*",
+      "gs://download.flutter.io/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar to gs://download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/download.flutter.io/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_3/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584 (2)"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom",
+      "[CLEANUP]/tmp_tmp_3/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_3/*",
+      "gs://download.flutter.io/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom to gs://download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/download.flutter.io/@@@"
+    ]
+  },
+  {
+    "cmd": [
       "vpython3",
       "-u",
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
@@ -427,446 +1417,6 @@
     ]
   },
   {
-    "cmd": [
-      "dart",
-      "pub",
-      "get"
-    ],
-    "cwd": "[CACHE]/builder/src",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "dart pub get"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/src/script1.sh",
-      "[CACHE]/builder/src/dev/felt.dart",
-      "--argument1"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "generator1"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/src/myscript.sh",
-      "param1",
-      "param2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "test: mytest"
-  },
-  {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "git rev-parse"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_1/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure /"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io",
-      "[CLEANUP]/tmp_tmp_2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2//download.flutter.io"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_2/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil /download.flutter.io",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
-  },
-  {
     "cmd": [],
     "name": "Set output properties",
     "~followup_annotations": [
diff --git a/recipes/engine_v2/builder.expected/dart-internal-flutter.json b/recipes/engine_v2/builder.expected/dart-internal-flutter.json
index 2f2a6c8..74bff98 100644
--- a/recipes/engine_v2/builder.expected/dart-internal-flutter.json
+++ b/recipes/engine_v2/builder.expected/dart-internal-flutter.json
@@ -372,6 +372,1343 @@
   },
   {
     "cmd": [
+      "dart",
+      "pub",
+      "get"
+    ],
+    "cwd": "[CACHE]/builder/src",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "dart pub get"
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/src/script1.sh",
+      "[CACHE]/builder/src/dev/felt.dart",
+      "--argument1"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "generator1"
+  },
+  {
+    "cmd": [],
+    "name": "Initialize logs"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/flutter_logs_dir"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Ensure [CLEANUP]/flutter_logs_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "",
+      "[CLEANUP]/flutter_logs_dir/noop.txt"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Write noop file",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/src/myscript.sh",
+      "param1",
+      "param2"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "test: mytest"
+  },
+  {
+    "cmd": [],
+    "name": "process logs"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/flutter_logs_dir",
+      "gs://flutter_logs/flutter/2d72510e447ab60a9728aeea2362d8be2cbd7789/mytest/00000000-0000-0000-0000-000000001337"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.gsutil upload logs 2d72510e447ab60a9728aeea2362d8be2cbd7789",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@archive logs@https://console.cloud.google.com/storage/browser/flutter_logs/flutter/2d72510e447ab60a9728aeea2362d8be2cbd7789/mytest/00000000-0000-0000-0000-000000001337@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "glob",
+      "[CLEANUP]/flutter_logs_dir",
+      "*"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.logs",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@glob@[CLEANUP]/flutter_logs_dir/a.txt@@@",
+      "@@@STEP_LOG_END@glob@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "log links",
+    "~followup_annotations": [
+      "@@@STEP_LINK@myfile.txt@https://storage.googleapis.com/flutter_logs/flutter/2d72510e447ab60a9728aeea2362d8be2cbd7789/mytest/00000000-0000-0000-0000-000000001337/myfile.txt@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CLEANUP]/flutter_logs_dir",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "log links.List logs path",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@listdir@[CLEANUP]/flutter_logs_dir/myfile.txt@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/reporter/snoopy_broker",
+      "-report-stage",
+      "-stage",
+      "upload"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "snoop: report_stage (4)"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Expand directory",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@listdir@[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar@@@",
+      "@@@STEP_LOG_LINE@listdir@[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git branch",
+    "~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",
+      "[CLEANUP]/tmp_tmp_1/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
+      "[CLEANUP]/tmp_tmp_1/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_1/*",
+      "gs://flutter_infra_release/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip to gs://flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "file_hash",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Compute file hash",
+    "~followup_annotations": [
+      "@@@STEP_TEXT@Hash calculated: 514e872bece8d7ee7d52fd8e7ef7b801e964e9d45bf1b7c084369533781038c7@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/reporter/snoopy_broker",
+      "-report-gcs",
+      "-digest",
+      "514e872bece8d7ee7d52fd8e7ef7b801e964e9d45bf1b7c084369533781038c7",
+      "-gcs-uri",
+      "gs://flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "snoop: report_gcs"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_2/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar",
+      "[CLEANUP]/tmp_tmp_2/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_2/*",
+      "gs://download.flutter.io/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar to gs://download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/download.flutter.io/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "file_hash",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Compute file hash (2)",
+    "~followup_annotations": [
+      "@@@STEP_TEXT@Hash calculated: 6689191ad27da9fce89670be7c2026d7c54c505dbf62803b64c538970cbc6169@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/reporter/snoopy_broker",
+      "-report-gcs",
+      "-digest",
+      "6689191ad27da9fce89670be7c2026d7c54c505dbf62803b64c538970cbc6169",
+      "-gcs-uri",
+      "gs://download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "snoop: report_gcs (2)"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_3/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584 (2)"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom",
+      "[CLEANUP]/tmp_tmp_3/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_3/*",
+      "gs://download.flutter.io/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom to gs://download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/download.flutter.io/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "file_hash",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Compute file hash (3)",
+    "~followup_annotations": [
+      "@@@STEP_TEXT@Hash calculated: f266d3932d72969e719dbf778847d9e47408016bf74262830d3db2b447542fcf@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/reporter/snoopy_broker",
+      "-report-gcs",
+      "-digest",
+      "f266d3932d72969e719dbf778847d9e47408016bf74262830d3db2b447542fcf",
+      "-gcs-uri",
+      "gs://download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "snoop: report_gcs (3)"
+  },
+  {
+    "cmd": [
+      "[START_DIR]/reporter/snoopy_broker",
+      "-report-stage",
+      "-stage",
+      "upload-complete"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "snoop: report_stage (5)"
+  },
+  {
+    "cmd": [
       "vpython3",
       "-u",
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
@@ -534,704 +1871,6 @@
     ]
   },
   {
-    "cmd": [
-      "dart",
-      "pub",
-      "get"
-    ],
-    "cwd": "[CACHE]/builder/src",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "dart pub get"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/src/script1.sh",
-      "[CACHE]/builder/src/dev/felt.dart",
-      "--argument1"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "generator1"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/src/myscript.sh",
-      "param1",
-      "param2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "test: mytest"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/reporter/snoopy_broker",
-      "-report-stage",
-      "-stage",
-      "upload"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "snoop: report_stage (4)"
-  },
-  {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "git rev-parse"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_1/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "file_hash",
-      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Compute file hash",
-    "~followup_annotations": [
-      "@@@STEP_TEXT@Hash calculated: 514e872bece8d7ee7d52fd8e7ef7b801e964e9d45bf1b7c084369533781038c7@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/reporter/snoopy_broker",
-      "-report-gcs",
-      "-digest",
-      "514e872bece8d7ee7d52fd8e7ef7b801e964e9d45bf1b7c084369533781038c7",
-      "-gcs-uri",
-      "gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "snoop: report_gcs"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure /"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io",
-      "[CLEANUP]/tmp_tmp_2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2//download.flutter.io"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_2/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil /download.flutter.io",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "file_hash",
-      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Compute file hash (2)",
-    "~followup_annotations": [
-      "@@@STEP_TEXT@Hash calculated: e562a8287043cc08772883e4f94791f8909c9f206c74e3db0f6977d2855c86ba@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/reporter/snoopy_broker",
-      "-report-gcs",
-      "-digest",
-      "e562a8287043cc08772883e4f94791f8909c9f206c74e3db0f6977d2855c86ba",
-      "-gcs-uri",
-      "gs://flutter_archives_v2//download.flutter.io"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "snoop: report_gcs (2)"
-  },
-  {
-    "cmd": [
-      "[START_DIR]/reporter/snoopy_broker",
-      "-report-stage",
-      "-stage",
-      "upload-complete"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "2d72510e447ab60a9728aeea2362d8be2cbd7789"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart-internal:flutter"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "snoop: report_stage (5)"
-  },
-  {
     "cmd": [],
     "name": "Set output properties",
     "~followup_annotations": [
diff --git a/recipes/engine_v2/builder.expected/mac.json b/recipes/engine_v2/builder.expected/mac.json
index 9ce736a..a06b524 100644
--- a/recipes/engine_v2/builder.expected/mac.json
+++ b/recipes/engine_v2/builder.expected/mac.json
@@ -399,6 +399,2423 @@
   },
   {
     "cmd": [
+      "dart",
+      "pub",
+      "get"
+    ],
+    "cwd": "[CACHE]/builder/src",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "dart pub get"
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/src/script1.sh",
+      "[CACHE]/builder/src/dev/felt.dart",
+      "--argument1"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "generator1"
+  },
+  {
+    "cmd": [],
+    "name": "Initialize logs"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/flutter_logs_dir"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Ensure [CLEANUP]/flutter_logs_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "",
+      "[CLEANUP]/flutter_logs_dir/noop.txt"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Write noop file",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/src/myscript.sh",
+      "param1",
+      "param2"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "test: mytest"
+  },
+  {
+    "cmd": [],
+    "name": "process logs"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/flutter_logs_dir",
+      "gs://flutter_logs/flutter/abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd/mytest/00000000-0000-0000-0000-000000001337"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.gsutil upload logs abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@archive logs@https://console.cloud.google.com/storage/browser/flutter_logs/flutter/abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd/mytest/00000000-0000-0000-0000-000000001337@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "glob",
+      "[CLEANUP]/flutter_logs_dir",
+      "*"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.logs",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@glob@[CLEANUP]/flutter_logs_dir/a.txt@@@",
+      "@@@STEP_LOG_END@glob@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "log links",
+    "~followup_annotations": [
+      "@@@STEP_LINK@myfile.txt@https://storage.googleapis.com/flutter_logs/flutter/abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd/mytest/00000000-0000-0000-0000-000000001337/myfile.txt@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CLEANUP]/flutter_logs_dir",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "log links.List logs path",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@listdir@[CLEANUP]/flutter_logs_dir/myfile.txt@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Expand directory",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@listdir@[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar@@@",
+      "@@@STEP_LOG_LINE@listdir@[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "RECIPE_MODULE[flutter::zip]/resources/namelist.py"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "namelist",
+    "stdin": "{\"zip_file\": \"[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip\"}",
+    "~followup_annotations": [
+      "@@@STEP_LOG_END@json.output (invalid)@@@",
+      "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+      "@@@STEP_LOG_END@json.output (exception)@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "RECIPE_MODULE[flutter::zip]/resources/namelist.py"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "namelist (2)",
+    "stdin": "{\"zip_file\": \"[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar\"}",
+    "~followup_annotations": [
+      "@@@STEP_LOG_END@json.output (invalid)@@@",
+      "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+      "@@@STEP_LOG_END@json.output (exception)@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "RECIPE_MODULE[flutter::zip]/resources/namelist.py"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "namelist (3)",
+    "stdin": "{\"zip_file\": \"[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom\"}",
+    "~followup_annotations": [
+      "@@@STEP_LOG_END@json.output (invalid)@@@",
+      "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+      "@@@STEP_LOG_END@json.output (exception)@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Codesign Dependencies"
+  },
+  {
+    "cmd": [],
+    "name": "Codesign Dependencies.Installing Mac codesign CIPD pkg",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[CLEANUP]/tmp_tmp_1",
+      "-ensure-file",
+      "flutter/codesign/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Codesign Dependencies.Installing Mac codesign CIPD pkg.ensure_installed",
+    "~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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"flutter/codesign/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": [],
+    "name": "Setup codesign environment"
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.ensure_installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/flutter_p12.encrypted",
+      "[CLEANUP]/flutter_p12.encrypted"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.gsutil download",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/flutter_p12.encrypted",
+      "-output",
+      "[CLEANUP]/FLUTTER_P12",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.cloudkms get key",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.ensure_installed (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/p12_password.encrypted",
+      "[CLEANUP]/p12_password.encrypted"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.gsutil download (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/p12_password.encrypted",
+      "-output",
+      "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.cloudkms get key (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.ensure_installed (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_team_id.encrypted",
+      "[CLEANUP]/codesign_team_id.encrypted"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.gsutil download (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_team_id.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_TEAM_ID",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.cloudkms get key (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.ensure_installed (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_app_specific_password.encrypted",
+      "[CLEANUP]/codesign_app_specific_password.encrypted"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.gsutil download (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_app_specific_password.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.cloudkms get key (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.ensure_installed (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_app_store_id.encrypted",
+      "[CLEANUP]/codesign_app_store_id.encrypted"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.gsutil download (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_app_store_id.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup codesign environment.cloudkms get key (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Setup keychain"
+  },
+  {
+    "cmd": [
+      "security",
+      "delete-keychain",
+      "build.keychain"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup keychain.delete previous keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "create-keychain",
+      "-p",
+      "",
+      "build.keychain"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup keychain.create keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "default-keychain",
+      "-s",
+      "build.keychain"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup keychain.default keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "unlock-keychain",
+      "-p",
+      "",
+      "build.keychain"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup keychain.unlock build keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "chmod",
+      "755",
+      "RECIPE_MODULE[flutter::signing]/resources/import_certificate.sh"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup keychain.Set execute permission",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "RECIPE_MODULE[flutter::signing]/resources/import_certificate.sh"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_1/codesign",
+      "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
+      "FLUTTER_P12_PASSWORD": "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "P12_SUFFIX_FILEPATH": "[CLEANUP]/flutter.p12",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup keychain.import certificate",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "set-key-partition-list",
+      "-S",
+      "apple-tool:,apple:,codesign:",
+      "-s",
+      "-k",
+      "",
+      "build.keychain"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup keychain.set key partition list",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "find-identity",
+      "-v"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Setup keychain.show-identities",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Keychain cleanup"
+  },
+  {
+    "cmd": [
+      "security",
+      "delete-keychain",
+      "build.keychain"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Keychain cleanup.delete keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "default-keychain",
+      "-s",
+      "login.keychain"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Keychain cleanup.Cleanup keychain.restore default keychain",
+    "~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",
+      "[CLEANUP]/tmp_tmp_2/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
+      "[CLEANUP]/tmp_tmp_2/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_2/*",
+      "gs://flutter_infra_release/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip to gs://flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_3/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar",
+      "[CLEANUP]/tmp_tmp_3/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_3/*",
+      "gs://download.flutter.io/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar to gs://download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/download.flutter.io/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_4/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584 (2)"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom",
+      "[CLEANUP]/tmp_tmp_4/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_4/*",
+      "gs://download.flutter.io/"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom to gs://download.flutter.io/io/flutter/x86_debug/1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/download.flutter.io/@@@"
+    ]
+  },
+  {
+    "cmd": [
       "vpython3",
       "-u",
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
@@ -562,446 +2979,6 @@
   },
   {
     "cmd": [
-      "dart",
-      "pub",
-      "get"
-    ],
-    "cwd": "[CACHE]/builder/src",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "dart pub get"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/src/script1.sh",
-      "[CACHE]/builder/src/dev/felt.dart",
-      "--argument1"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "generator1"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/src/myscript.sh",
-      "param1",
-      "param2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "test: mytest"
-  },
-  {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "git rev-parse"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_1/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure /"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CACHE]/builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io",
-      "[CLEANUP]/tmp_tmp_2"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2//download.flutter.io"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_2/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "darwin",
-      "REVISION": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil /download.flutter.io",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
-  },
-  {
-    "cmd": [
       "sudo",
       "xcode-select",
       "--reset"
diff --git a/recipes/engine_v2/builder.expected/monorepo.json b/recipes/engine_v2/builder.expected/monorepo.json
index d449b8e..28e0575 100644
--- a/recipes/engine_v2/builder.expected/monorepo.json
+++ b/recipes/engine_v2/builder.expected/monorepo.json
@@ -321,6 +321,805 @@
   },
   {
     "cmd": [
+      "dart",
+      "pub",
+      "get"
+    ],
+    "cwd": "[CACHE]/builder/engine/src",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "dart pub get"
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/engine/src/script1.sh",
+      "[CACHE]/builder/engine/src/dev/felt.dart",
+      "--argument1"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "generator1"
+  },
+  {
+    "cmd": [],
+    "name": "Initialize logs"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/flutter_logs_dir"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Ensure [CLEANUP]/flutter_logs_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "",
+      "[CLEANUP]/flutter_logs_dir/noop.txt"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Write noop file",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/engine/src/myscript.sh",
+      "param1",
+      "param2"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "test: mytest"
+  },
+  {
+    "cmd": [],
+    "name": "process logs"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/flutter_logs_dir",
+      "gs://flutter_logs/flutter/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/mytest/00000000-0000-0000-0000-000000001337"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.gsutil upload logs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@archive logs@https://console.cloud.google.com/storage/browser/flutter_logs/flutter/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/mytest/00000000-0000-0000-0000-000000001337@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "glob",
+      "[CLEANUP]/flutter_logs_dir",
+      "*"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.logs",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@glob@[CLEANUP]/flutter_logs_dir/a.txt@@@",
+      "@@@STEP_LOG_END@glob@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "log links",
+    "~followup_annotations": [
+      "@@@STEP_LINK@myfile.txt@https://storage.googleapis.com/flutter_logs/flutter/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/mytest/00000000-0000-0000-0000-000000001337/myfile.txt@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CLEANUP]/flutter_logs_dir",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "log links.List logs path",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@listdir@[CLEANUP]/flutter_logs_dir/myfile.txt@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/../../monorepo",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "git rev-parse"
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git branch",
+    "~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",
+      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/engine/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
+      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/engine/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_1/*",
+      "gs://flutter_archives_v2/"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/engine/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip to gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_2/monorepo"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure monorepo"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/builder/engine/src/out/android_jit_release_x86/zip_archives/download.flutter.io",
+      "[CLEANUP]/tmp_tmp_2/monorepo"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Copy [CACHE]/builder/engine/src/out/android_jit_release_x86/zip_archives/download.flutter.io to tmp location"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_2/*",
+      "gs://flutter_archives_v2/"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil Upload [CACHE]/builder/engine/src/out/android_jit_release_x86/zip_archives/download.flutter.io to gs://flutter_archives_v2/monorepo//download.flutter.io",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
+    ]
+  },
+  {
+    "cmd": [
       "vpython3",
       "-u",
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
@@ -483,446 +1282,6 @@
     ]
   },
   {
-    "cmd": [
-      "dart",
-      "pub",
-      "get"
-    ],
-    "cwd": "[CACHE]/builder/engine/src",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "dart pub get"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/engine/src/script1.sh",
-      "[CACHE]/builder/engine/src/dev/felt.dart",
-      "--argument1"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "generator1"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/engine/src/myscript.sh",
-      "param1",
-      "param2"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "test: mytest"
-  },
-  {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/../../monorepo",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "git rev-parse"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CACHE]/builder/engine/src/out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
-      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_1/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil monorepo/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/android-x86-jit-release/artifacts.zip",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_2/monorepo"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure monorepo"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CACHE]/builder/engine/src/out/android_jit_release_x86/zip_archives/download.flutter.io",
-      "[CLEANUP]/tmp_tmp_2/monorepo"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2/monorepo//download.flutter.io"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_2/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil monorepo//download.flutter.io",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
-  },
-  {
     "cmd": [],
     "name": "Set output properties",
     "~followup_annotations": [
diff --git a/recipes/engine_v2/builder.expected/monorepo_tryjob.json b/recipes/engine_v2/builder.expected/monorepo_tryjob.json
index f7cade8..b1949c9 100644
--- a/recipes/engine_v2/builder.expected/monorepo_tryjob.json
+++ b/recipes/engine_v2/builder.expected/monorepo_tryjob.json
@@ -405,6 +405,483 @@
   },
   {
     "cmd": [
+      "dart",
+      "pub",
+      "get"
+    ],
+    "cwd": "[CACHE]/builder/engine/src",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "dart pub get"
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/engine/src/script1.sh",
+      "[CACHE]/builder/engine/src/dev/felt.dart",
+      "--argument1"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "generator1"
+  },
+  {
+    "cmd": [],
+    "name": "Initialize logs"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/flutter_logs_dir"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Ensure [CLEANUP]/flutter_logs_dir",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "",
+      "[CLEANUP]/flutter_logs_dir/noop.txt"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Initialize logs.Write noop file",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[CACHE]/builder/engine/src/myscript.sh",
+      "param1",
+      "param2"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "test: mytest"
+  },
+  {
+    "cmd": [],
+    "name": "process logs"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "-m",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/flutter_logs_dir",
+      "gs://flutter_logs/flutter/00000000-0000-0000-0000-000000001337/mytest/00000000-0000-0000-0000-000000001337"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.gsutil upload logs 00000000-0000-0000-0000-000000001337",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@archive logs@https://console.cloud.google.com/storage/browser/flutter_logs/flutter/00000000-0000-0000-0000-000000001337/mytest/00000000-0000-0000-0000-000000001337@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "glob",
+      "[CLEANUP]/flutter_logs_dir",
+      "*"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "process logs.logs",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@glob@[CLEANUP]/flutter_logs_dir/a.txt@@@",
+      "@@@STEP_LOG_END@glob@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "log links",
+    "~followup_annotations": [
+      "@@@STEP_LINK@myfile.txt@https://storage.googleapis.com/flutter_logs/flutter/00000000-0000-0000-0000-000000001337/mytest/00000000-0000-0000-0000-000000001337/myfile.txt@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CLEANUP]/flutter_logs_dir",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "log links.List logs path",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@listdir@[CLEANUP]/flutter_logs_dir/myfile.txt@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "ENGINE_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": ""
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
       "vpython3",
       "-u",
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
@@ -567,124 +1044,6 @@
     ]
   },
   {
-    "cmd": [
-      "dart",
-      "pub",
-      "get"
-    ],
-    "cwd": "[CACHE]/builder/engine/src",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": ""
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "dart pub get"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/engine/src/script1.sh",
-      "[CACHE]/builder/engine/src/dev/felt.dart",
-      "--argument1"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": ""
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "generator1"
-  },
-  {
-    "cmd": [
-      "[CACHE]/builder/engine/src/myscript.sh",
-      "param1",
-      "param2"
-    ],
-    "cwd": "[CACHE]/builder/engine/src/flutter",
-    "env": {
-      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
-      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
-      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
-      "ENGINE_PATH": "[CACHE]/builder",
-      "GIT_BRANCH": "",
-      "LUCI_BRANCH": "",
-      "LUCI_CI": "True",
-      "LUCI_PR": "",
-      "LUCI_WORKDIR": "[START_DIR]",
-      "OS": "linux",
-      "REVISION": ""
-    },
-    "env_prefixes": {
-      "PATH": [
-        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
-      ]
-    },
-    "luci_context": {
-      "realm": {
-        "name": "dart:ci.sandbox"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "test: mytest"
-  },
-  {
     "cmd": [],
     "name": "Set output properties",
     "~followup_annotations": [
diff --git a/recipes/engine_v2/builder.py b/recipes/engine_v2/builder.py
index 0b0ddf1..8c39e25 100644
--- a/recipes/engine_v2/builder.py
+++ b/recipes/engine_v2/builder.py
@@ -40,12 +40,14 @@
     'flutter/build_util',
     'flutter/flutter_bcid',
     'flutter/flutter_deps',
+    'flutter/logs_util',
     'flutter/monorepo',
     'flutter/os_utils',
     'flutter/osx_sdk',
     'flutter/repo_util',
     'flutter/retry',
     'flutter/shard_util_v2',
+    'flutter/signing',
     'flutter/test_utils',
     'fuchsia/cas_util',
     'recipe_engine/bcid_reporter',
@@ -64,23 +66,100 @@
 ANDROID_ARTIFACTS_BUCKET = 'download.flutter.io'
 
 
+# Relative paths used to mock paths for testing.
+MOCK_JAR_PATH = (
+    'io/flutter/x86_debug/'
+    '1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/'
+    'x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.jar'
+)
+MOCK_POM_PATH = (
+    'io/flutter/x86_debug/'
+    '1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584/'
+    'x86_debug-1.0.0-0005149dca9b248663adcde4bdd7c6c915a76584.pom'
+)
+
+# Used for mock paths
+DIRECTORY = 'DIRECTORY'
+
+
+def run_generators(api, pub_dirs, generator_tasks, checkout, env, env_prefixes):
+  """Runs sub-builds generators."""
+  # Run pub on all of the pub_dirs.
+  for pub in pub_dirs:
+    pub_dir = api.path.abs_to_path(
+        api.path.dirname(
+            checkout.join(pub))
+    )
+    with api.context(env=env, env_prefixes=env_prefixes,
+                     cwd=pub_dir):
+      api.step('dart pub get', ['dart', 'pub', 'get'])
+  for generator_task in generator_tasks:
+    # Generators must run from inside flutter folder.
+    cmd = []
+    for script in generator_task.get('scripts'):
+      full_path_script = checkout.join(script)
+      cmd.append(full_path_script)
+    cmd.extend(generator_task.get('parameters', []))
+    api.step(generator_task.get('name'), cmd)
+
+
+def run_tests(api, tests, checkout, env, env_prefixes):
+  """Runs sub-build tests."""
+  # Run local tests in the builder to optimize resource usage.
+  for test in tests:
+    command = [test.get('language')] if test.get('language') else []
+    # Ideally local tests should be completely hermetic and in theory we can run
+    # them in parallel using futures. I haven't found a flutter engine
+    # configuration with more than one local test but once we find it we
+    # should run the list of tests using parallelism.
+    # TODO(godofredoc): Optimize to run multiple local tests in parallel.
+    command.append(checkout.join(test.get('script')))
+    command.extend(test.get('parameters', []))
+    #api.step(test.get('name'), command)
+    step_name = api.test_utils.test_step_name(test.get('name'))
+
+    def run_test():
+      return api.step(step_name, command)
+
+    # Rerun test step 3 times by default if failing.
+    # TODO(keyonghan): notify tree gardener for test failures/flakes:
+    # https://github.com/flutter/flutter/issues/89308
+    api.logs_util.initialize_logs_collection(env)
+    try:
+      # Run within another context to make the logs env variable available to
+      # test scripts.
+      with api.context(env=env, env_prefixes=env_prefixes):
+        api.retry.wrap(run_test, step_name=test.get('name'))
+    finally:
+      api.logs_util.upload_logs(test.get('name'))
+
+
 def Build(api, checkout, env, env_prefixes, outputs):
   """Builds a flavor identified as a set of gn and ninja configs."""
+
+  # Mock data for tests. This is required for the archive api to expand the directory to full path
+  # of files.
+  api.path.mock_add_paths(
+      api.path['cache'].join(
+          'builder/src/out/android_jit_release_x86/zip_archives/download.flutter.io'),
+      DIRECTORY
+  )
+
   ninja_tool = {
       "ninja": api.build_util.build,
   }
-  deps = api.properties.get('dependencies', [])
-  api.flutter_deps.required_deps(env, env_prefixes, deps)
   build = api.properties.get('build')
+  deps = build.get('dependencies', [])
+  api.flutter_deps.required_deps(env, env_prefixes, deps)
   api.flutter_bcid.report_stage('compile')
-  api.build_util.run_gn(build.get('gn'), checkout)
-  ninja = build.get('ninja')
-  ninja_tool[ninja.get('tool', 'ninja')
-            ](ninja.get('config'), checkout, ninja.get('targets'))
-  # Archive full build. This is inneficient but necessary for global generators.
-  full_build_hash = api.shard_util_v2.archive_full_build(
-          checkout.join('out', build.get('name')), build.get('name'))
-  outputs['full_build'] = full_build_hash
+  gn = build.get('gn')
+  if gn:
+    api.build_util.run_gn(build.get('gn'), checkout)
+    ninja = build.get('ninja')
+    ninja_tool[ninja.get('tool', 'ninja')](
+            ninja.get('config'),
+            checkout,
+            ninja.get('targets', []))
   generator_tasks = build.get('generators', {}).get('tasks', [])
   pub_dirs = build.get('generators', {}).get('pub_dirs', [])
   archives = build.get('archives', [])
@@ -88,52 +167,30 @@
   tests = [t for t in build.get('tests', []) if t.get('type') == 'local']
   with api.context(env=env, env_prefixes=env_prefixes,
                    cwd=checkout.join('flutter')):
-    # Run pub on all of the pub_dirs.
-    for pub in pub_dirs:
-      pub_dir = api.path.abs_to_path(
-          api.path.dirname(
-              checkout.join(pub))
-      )
-      with api.context(env=env, env_prefixes=env_prefixes,
-                       cwd=pub_dir):
-        api.step('dart pub get', ['dart', 'pub', 'get'])
-    for generator_task in generator_tasks:
-      # Generators must run from inside flutter folder.
-      cmd = []
-      for script in generator_task.get('scripts'):
-        full_path_script = checkout.join(script)
-        cmd.append(full_path_script)
-      cmd.extend(generator_task.get('parameters', []))
-      api.step(generator_task.get('name'), cmd)
-    # Run local tests in the builder to optimize resource usage.
-    for test in tests:
-      command = [test.get('language')] if test.get('language') else []
-      # Ideally local tests should be completely hermetic and in theory we can run
-      # them in parallel using futures. I haven't found a flutter engine
-      # configuration with more than one local test but once we find it we
-      # should run the list of tests using parallelism.
-      # TODO(godofredoc): Optimize to run multiple local tests in parallel.
-      command.append(checkout.join(test.get('script')))
-      command.extend(test.get('parameters', []))
-      #api.step(test.get('name'), command)
-      step_name = api.test_utils.test_step_name(test.get('name'))
-
-      def run_test():
-        return api.step(step_name, command)
-
-      # Rerun test step 3 times by default if failing.
-      # TODO(keyonghan): notify tree gardener for test failures/flakes:
-      # https://github.com/flutter/flutter/issues/89308
-      api.retry.wrap(run_test, step_name=test.get('name'))
-
+    run_generators(api, pub_dirs, generator_tasks, checkout, env, env_prefixes)
+    run_tests(api, tests, checkout, env, env_prefixes)
     api.flutter_bcid.report_stage('upload')
     for archive_config in archives:
       outputs[archive_config['name']] = Archive(api, checkout, archive_config)
     api.flutter_bcid.report_stage('upload-complete')
+  # Archive full build. This is inneficient but necessary for global generators.
+  full_build_hash = api.shard_util_v2.archive_full_build(
+          checkout.join('out', build.get('name')), build.get('name'))
+  outputs['full_build'] = full_build_hash
 
 
 def Archive(api, checkout,  archive_config):
   paths = api.archives.engine_v2_gcs_paths(checkout, archive_config)
+  # Sign artifacts if running on mac and a release candidate branch.
+  is_release_branch = api.repo_util.is_release_candidate_branch(
+      checkout.join('flutter')
+  )
+  if api.platform.is_mac and is_release_branch:
+    signing_paths = [
+        path.local for path in paths
+        if api.signing.requires_signing(path.local)
+    ]
+    api.signing.code_sign(signing_paths)
   for path in paths:
     api.archives.upload_artifact(path.local, path.remote)
     api.flutter_bcid.upload_provenance(
@@ -178,6 +235,7 @@
                 {
                     "name": "android_jit_release_x86",
                     "type": "gcs",
+                    "realm": "production",
                     "base_path": "out/android_jit_release_x86/zip_archives/",
                     "include_paths": [
                         "out/android_jit_release_x86/zip_archives/android-x86-jit-release/artifacts.zip",
@@ -229,6 +287,13 @@
           revision='abcd' * 10,
           build_number=123,
       ),
+      api.signing.flutter_signing_identity(),
+      api.step_data(
+          'Identify branches.git branch',
+          stdout=api.raw_io
+              .output_text('branch1\nbranch2\nflutter-3.2-candidate.5')
+      ),
+
   )
   yield api.test(
       'monorepo',
@@ -253,3 +318,4 @@
           git_ref='refs/heads/main',
       ),
   )
+
diff --git a/recipes/engine_v2/engine_v2.expected/basic_linux.json b/recipes/engine_v2/engine_v2.expected/basic_linux.json
index 841cdec..aef7033 100644
--- a/recipes/engine_v2/engine_v2.expected/basic_linux.json
+++ b/recipes/engine_v2/engine_v2.expected/basic_linux.json
@@ -24,7 +24,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"build\": {\"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}}, \"environment\": \"Staging\", \"gclient_variables\": {}, \"generators\": {\"tasks\": [{\"language\": \"python3\", \"name\": \"Debug-FlutterMacOS.framework\", \"parameters\": [\"--variant\", \"host_profile\", \"--type\", \"engine\", \"--engine-capture-core-dump\"], \"script\": \"flutter/sky/tools/create_macos_framework.py\", \"type\": \"local\"}]}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"archives\": [{\"base_path\": \"out/host_debug/zip_archives/\", \"include_paths\": [\"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"], \"name\": \"host_debug\", \"type\": \"gcs\"}], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}, \"recipe\": \"engine_v2/builder\"}, \"environment\": \"Staging\", \"gclient_variables\": {}, \"generators\": {\"tasks\": [{\"language\": \"python3\", \"name\": \"Debug-FlutterMacOS.framework\", \"parameters\": [\"--variant\", \"host_profile\", \"--type\", \"engine\", \"--engine-capture-core-dump\"], \"script\": \"flutter/sky/tools/create_macos_framework.py\", \"type\": \"local\"}]}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -73,9 +73,22 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"base_path\": \"out/host_debug/zip_archives/\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@request@                ], @@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"host_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
       "@@@STEP_LOG_LINE@request@            \"generators\": [@@@",
       "@@@STEP_LOG_LINE@request@              {@@@",
       "@@@STEP_LOG_LINE@request@                \"name\": \"generator1\", @@@",
@@ -89,7 +102,8 @@
       "@@@STEP_LOG_LINE@request@            \"ninja\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"config\": \"ios_debug\", @@@",
       "@@@STEP_LOG_LINE@request@              \"targets\": []@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"environment\": \"Staging\", @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
@@ -686,62 +700,16 @@
     ]
   },
   {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "listdir",
-      "[CACHE]/builder/src/out",
-      "--recursive"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Final List checkout",
-    "~followup_annotations": [
-      "@@@STEP_LOG_END@listdir@@@"
-    ]
+    "cmd": [],
+    "name": "launch tests (2)"
   },
   {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "listdir",
-      "[CACHE]/builder/src/flutter/sky",
-      "--recursive"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Final List checkout 2",
-    "~followup_annotations": [
-      "@@@STEP_LOG_END@listdir@@@"
-    ]
+    "cmd": [],
+    "name": "collect tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "display tests (2)"
   },
   {
     "name": "$result"
diff --git a/recipes/engine_v2/engine_v2.expected/basic_mac.json b/recipes/engine_v2/engine_v2.expected/basic_mac.json
index fae952c..553d03f 100644
--- a/recipes/engine_v2/engine_v2.expected/basic_mac.json
+++ b/recipes/engine_v2/engine_v2.expected/basic_mac.json
@@ -24,7 +24,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"prod\", \"builder\": \"Mac Production Engine Drone\", \"project\": \"flutter\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"archives\": [{\"destination\": \"bucket/c.txt\", \"name\": \"c.txt\", \"source\": \"/a/b/c.txt\"}], \"build\": {\"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}}, \"gclient_variables\": {}, \"generators\": {\"tasks\": [{\"language\": \"python3\", \"name\": \"Debug-FlutterMacOS.framework\", \"parameters\": [\"--variant\", \"host_profile\", \"--type\", \"engine\", \"--engine-capture-core-dump\"], \"script\": \"flutter/sky/tools/create_macos_framework.py\", \"type\": \"local\"}]}, \"recipe\": \"engine_v2/builder\", \"tests\": []}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"prod\", \"builder\": \"Mac Production Engine Drone\", \"project\": \"flutter\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"archives\": [{\"destination\": \"bucket/c.txt\", \"name\": \"c.txt\", \"source\": \"/a/b/c.txt\"}], \"build\": {\"archives\": [{\"base_path\": \"out/host_debug/zip_archives/\", \"include_paths\": [\"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"], \"name\": \"host_debug\", \"type\": \"gcs\"}], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}, \"recipe\": \"engine_v2/builder\"}, \"gclient_variables\": {}, \"generators\": {\"tasks\": [{\"language\": \"python3\", \"name\": \"Debug-FlutterMacOS.framework\", \"parameters\": [\"--variant\", \"host_profile\", \"--type\", \"engine\", \"--engine-capture-core-dump\"], \"script\": \"flutter/sky/tools/create_macos_framework.py\", \"type\": \"local\"}]}, \"recipe\": \"engine_v2/builder\", \"tests\": []}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -65,7 +65,7 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"archives\": [@@@",
       "@@@STEP_LOG_LINE@request@            {@@@",
@@ -75,6 +75,19 @@
       "@@@STEP_LOG_LINE@request@            }@@@",
       "@@@STEP_LOG_LINE@request@          ], @@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"base_path\": \"out/host_debug/zip_archives/\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@request@                ], @@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"host_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
       "@@@STEP_LOG_LINE@request@            \"generators\": [@@@",
       "@@@STEP_LOG_LINE@request@              {@@@",
       "@@@STEP_LOG_LINE@request@                \"name\": \"generator1\", @@@",
@@ -88,7 +101,8 @@
       "@@@STEP_LOG_LINE@request@            \"ninja\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"config\": \"ios_debug\", @@@",
       "@@@STEP_LOG_LINE@request@              \"targets\": []@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
       "@@@STEP_LOG_LINE@request@          \"generators\": {@@@",
@@ -744,6 +758,207 @@
   },
   {
     "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Global generators.Identify branches",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Identify branches.git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "RECIPE_MODULE[flutter::zip]/resources/namelist.py"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.namelist",
+    "stdin": "{\"zip_file\": \"/a/b/c.txt\"}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_END@json.output (invalid)@@@",
+      "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+      "@@@STEP_LOG_END@json.output (exception)@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CLEANUP]/tmp_tmp_1/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Ensure flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "/a/b/c.txt",
+      "[CLEANUP]/tmp_tmp_1/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Copy /a/b/c.txt to tmp location",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_1/*",
+      "gs://flutter_infra_release/"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "flutter:prod"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.gsutil Upload /a/b/c.txt to gs://flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket/c.txt",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
+    ]
+  },
+  {
+    "cmd": [
       "sudo",
       "xcode-select",
       "--reset"
@@ -767,168 +982,16 @@
     ]
   },
   {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "listdir",
-      "[CACHE]/builder/src/out",
-      "--recursive"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Final List checkout",
-    "~followup_annotations": [
-      "@@@STEP_LOG_END@listdir@@@"
-    ]
+    "cmd": [],
+    "name": "launch tests (2)"
   },
   {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "listdir",
-      "[CACHE]/builder/src/flutter/sky",
-      "--recursive"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Final List checkout 2",
-    "~followup_annotations": [
-      "@@@STEP_LOG_END@listdir@@@"
-    ]
+    "cmd": [],
+    "name": "collect tests (2)"
   },
   {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "git rev-parse"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket"
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "/a/b/c.txt",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket/c.txt"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_1/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "flutter:prod"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket/c.txt",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
+    "cmd": [],
+    "name": "display tests (2)"
   },
   {
     "name": "$result"
diff --git a/recipes/engine_v2/engine_v2.expected/codesign_release_branch.json b/recipes/engine_v2/engine_v2.expected/codesign_release_branch.json
new file mode 100644
index 0000000..e3c6ec9
--- /dev/null
+++ b/recipes/engine_v2/engine_v2.expected/codesign_release_branch.json
@@ -0,0 +1,2306 @@
+[
+  {
+    "cmd": [],
+    "name": "Checkout flutter/engine"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+      "--path",
+      "[START_DIR]/engine",
+      "--url",
+      "https://flutter.googlesource.com/mirrors/engine"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/engine.git setup",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "fetch",
+      "origin",
+      "--recurse-submodules",
+      "--progress",
+      "--tags"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "env": {
+      "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/engine.git fetch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "checkout",
+      "-f",
+      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/engine.git checkout",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/engine.read revision",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "clean",
+      "-f",
+      "-d",
+      "-x"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/engine.git clean",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "submodule",
+      "sync"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/engine.submodule sync",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "submodule",
+      "update",
+      "--init",
+      "--recursive"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/engine.submodule update",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[START_DIR]/engine/ci/builders/config_name.json",
+      "/path/to/tmp/"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Read build config file",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@config_name.json@{@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"destination\": \"bucket/c.txt\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"name\": \"c.txt\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"source\": \"/a/b/c.txt\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  \"builds\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"base_path\": \"out/host_debug/zip_archives/\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"name\": \"host_debug\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"generators\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"name\": \"generator1\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"script\": \"script1.sh\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"gn\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"--ios\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"name\": \"ios_debug\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"ninja\": {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"config\": \"ios_debug\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"targets\": []@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  \"generators\": {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"language\": \"python3\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"name\": \"Debug-FlutterMacOS.framework\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"parameters\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"--variant\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"host_profile\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"--type\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"engine\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"--engine-capture-core-dump\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"script\": \"flutter/sky/tools/create_macos_framework.py\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"type\": \"local\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    ]@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@}@@@",
+      "@@@STEP_LOG_END@config_name.json@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches (2)"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (2).git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (2).git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch builds"
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "launch builds.schedule",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Mac Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/flutter-3.2-candidate.5\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"archives\": [{\"base_path\": \"out/host_debug/zip_archives/\", \"include_paths\": [\"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"], \"name\": \"host_debug\", \"type\": \"gcs\"}], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}, \"recipe\": \"engine_v2/builder\"}, \"config_name\": \"config_name\", \"environment\": \"Staging\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
+      "@@@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@        \"id\": \"8945511751514863186\"@@@",
+      "@@@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@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Mac Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/flutter-3.2-candidate.5\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"experimental\": \"NO\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"experiments\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"luci.buildbucket.parent_tracking\": false@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"change\": \"123456\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"host\": \"flutter-review.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"project\": \"mirrors/engine\"@@@",
+      "@@@STEP_LOG_LINE@request@          }@@@",
+      "@@@STEP_LOG_LINE@request@        ], @@@",
+      "@@@STEP_LOG_LINE@request@        \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"host\": \"flutter.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
+      "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"base_path\": \"out/host_debug/zip_archives/\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@request@                ], @@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"host_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
+      "@@@STEP_LOG_LINE@request@            \"generators\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"generator1\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"script\": \"script1.sh\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
+      "@@@STEP_LOG_LINE@request@            \"gn\": [@@@",
+      "@@@STEP_LOG_LINE@request@              \"--ios\"@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
+      "@@@STEP_LOG_LINE@request@            \"name\": \"ios_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"ninja\": {@@@",
+      "@@@STEP_LOG_LINE@request@              \"config\": \"ios_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"targets\": []@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          \"config_name\": \"config_name\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"environment\": \"Staging\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
+      "@@@STEP_LOG_LINE@request@          \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"parentRunId\": \"fake-task-id\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"cq_experimental\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"parent_buildbucket_id\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"user_agent\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"recipe\"@@@",
+      "@@@STEP_LOG_LINE@request@          }@@@",
+      "@@@STEP_LOG_LINE@request@        ]@@@",
+      "@@@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@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect builds"
+  },
+  {
+    "cmd": [],
+    "name": "collect builds.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "20s",
+      "8945511751514863186"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "collect builds.collect.wait",
+    "timeout": 86400,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "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\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@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@@@",
+      "@@@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@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "display builds"
+  },
+  {
+    "cmd": [],
+    "name": "display builds.ios_debug",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch tests"
+  },
+  {
+    "cmd": [],
+    "name": "collect tests"
+  },
+  {
+    "cmd": [],
+    "name": "display tests"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CACHE]/builder"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure full engine checkout folder"
+  },
+  {
+    "cmd": [],
+    "name": "Checkout source code"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "RECIPE_REPO[depot_tools]/gerrit_client.py",
+      "changes",
+      "--host",
+      "https://flutter-review.googlesource.com",
+      "--json_file",
+      "/path/to/tmp/json",
+      "--limit",
+      "1",
+      "-p",
+      "change=123456",
+      "-o",
+      "ALL_REVISIONS",
+      "-o",
+      "DOWNLOAD_COMMANDS"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "PATH": "<PATH>:RECIPE_REPO[depot_tools]",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout source code.gerrit fetch current CL info",
+    "timeout": 60,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"branch\": \"main\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"owner\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"name\": \"John Doe\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"revisions\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"184ebe53805e102605d11f6b143486d15c23a09c\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"_number\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"ref\": \"refs/changes/56/123456/7\"@@@",
+      "@@@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": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+      "--spec-path",
+      "cache_dir = '[CACHE]/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'src/flutter', 'url': 'https://flutter.googlesource.com/mirrors/engine'}]",
+      "--patch_root",
+      "src/flutter",
+      "--revision_mapping_file",
+      "{\"got_engine_revision\": \"src/flutter\"}",
+      "--git-cache-dir",
+      "[CACHE]/git",
+      "--cleanup-dir",
+      "[CLEANUP]/bot_update",
+      "--output_json",
+      "/path/to/tmp/json",
+      "--patch_ref",
+      "https://flutter.googlesource.com/mirrors/engine@refs/heads/main:refs/changes/56/123456/7",
+      "--revision",
+      "src/flutter@refs/heads/main",
+      "--refs",
+      "refs/heads/main",
+      "--refs",
+      "refs/heads/main"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "DEPOT_TOOLS_REPORT_BUILD": "proj/try/try-builder/8945511751514863184",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "GIT_HTTP_LOW_SPEED_LIMIT": "102400",
+      "GIT_HTTP_LOW_SPEED_TIME": "1800",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0",
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]",
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout source code.bot_update",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_TEXT@Some step text@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"did_run\": true, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"fixed_revisions\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"src/flutter\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"manifest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"src/flutter\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/flutter.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"e1f32bac24d72ebe0a5713009ae850c6320e7c7d\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"patch_failure\": false, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"patch_root\": \"src/flutter\", @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_engine_revision\": \"e1f32bac24d72ebe0a5713009ae850c6320e7c7d\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_engine_revision_cp\": \"refs/heads/main@{#84512}\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_revision\": \"9221bca00ddbd888260084def81f09543281b952\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"root\": \"src/flutter\", @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"source_manifest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"directories\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"src/flutter\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"git_checkout\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"repo_url\": \"https://fake.org/src/flutter.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"revision\": \"e1f32bac24d72ebe0a5713009ae850c6320e7c7d\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"version\": 0@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"step_text\": \"Some step text\"@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@SET_BUILD_PROPERTY@got_engine_revision@\"e1f32bac24d72ebe0a5713009ae850c6320e7c7d\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_engine_revision_cp@\"refs/heads/main@{#84512}\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_revision@\"9221bca00ddbd888260084def81f09543281b952\"@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_REPO[depot_tools]/gclient.py",
+      "runhooks"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "DEPOT_TOOLS_REPORT_BUILD": "proj/try/try-builder/8945511751514863184",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]",
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout source code.gclient runhooks",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "rmtree",
+      "[CACHE]/builder/src/out"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Clobber build download folder"
+  },
+  {
+    "cmd": [],
+    "name": "Global generators"
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[CACHE]/osx_sdk",
+      "-ensure-file",
+      "infra/tools/mac_toolchain/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.ensure_installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/mac_toolchain/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": [
+      "[CACHE]/osx_sdk/mac_toolchain",
+      "install",
+      "-kind",
+      "ios",
+      "-xcode-version",
+      "9f2000",
+      "-output-dir",
+      "[CACHE]/osx_sdk/XCode.app",
+      "-cipd-package-prefix",
+      "flutter_internal/ios/xcode",
+      "-with-runtime=True"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.install xcode",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "killall",
+      "-9",
+      "com.apple.CoreSimulator.CoreSimulatorDevice"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.kill dart",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "sudo",
+      "xcode-select",
+      "--switch",
+      "[CACHE]/osx_sdk/XCode.app"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.select XCode",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "xcrun",
+      "simctl",
+      "list"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.list simulators",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CACHE]/builder/src/out",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.List checkout",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "[CACHE]/builder/src/flutter/sky/tools/create_macos_framework.py",
+      "--variant",
+      "host_profile",
+      "--type",
+      "engine",
+      "--engine-capture-core-dump"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "darwin",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Debug-FlutterMacOS.framework",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Global generators.Identify branches",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[CACHE]/builder/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Identify branches.git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "RECIPE_MODULE[flutter::zip]/resources/namelist.py"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.namelist",
+    "stdin": "{\"zip_file\": \"/a/b/c.txt\"}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_END@json.output (invalid)@@@",
+      "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+      "@@@STEP_LOG_END@json.output (exception)@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "RECIPE_MODULE[flutter::zip]/resources/namelist.py"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.namelist (2)",
+    "stdin": "{\"zip_file\": \"/a/b/c.txt\"}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_END@json.output (invalid)@@@",
+      "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+      "@@@STEP_LOG_END@json.output (exception)@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Global generators.Codesign Dependencies",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Global generators.Codesign Dependencies.Installing Mac codesign CIPD pkg",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[CLEANUP]/tmp_tmp_1",
+      "-ensure-file",
+      "flutter/codesign/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Codesign Dependencies.Installing Mac codesign CIPD pkg.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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"flutter/codesign/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": [],
+    "name": "Global generators.Setup codesign environment",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.ensure_installed",
+    "~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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/flutter_p12.encrypted",
+      "[CLEANUP]/flutter_p12.encrypted"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.gsutil download",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/flutter_p12.encrypted",
+      "-output",
+      "[CLEANUP]/FLUTTER_P12",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.cloudkms get key",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.ensure_installed (2)",
+    "~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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/p12_password.encrypted",
+      "[CLEANUP]/p12_password.encrypted"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.gsutil download (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/p12_password.encrypted",
+      "-output",
+      "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.cloudkms get key (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.ensure_installed (3)",
+    "~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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_team_id.encrypted",
+      "[CLEANUP]/codesign_team_id.encrypted"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.gsutil download (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_team_id.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_TEAM_ID",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.cloudkms get key (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.ensure_installed (4)",
+    "~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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_app_specific_password.encrypted",
+      "[CLEANUP]/codesign_app_specific_password.encrypted"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.gsutil download (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_app_specific_password.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.cloudkms get key (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.ensure_installed (5)",
+    "~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-latest----------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/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": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_app_store_id.encrypted",
+      "[CLEANUP]/codesign_app_store_id.encrypted"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.gsutil download (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_app_store_id.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup codesign environment.cloudkms get key (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Global generators.Setup keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "delete-keychain",
+      "build.keychain"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup keychain.delete previous keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "create-keychain",
+      "-p",
+      "",
+      "build.keychain"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup keychain.create keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "default-keychain",
+      "-s",
+      "build.keychain"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup keychain.default keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "unlock-keychain",
+      "-p",
+      "",
+      "build.keychain"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup keychain.unlock build keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "chmod",
+      "755",
+      "RECIPE_MODULE[flutter::signing]/resources/import_certificate.sh"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup keychain.Set execute permission",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "RECIPE_MODULE[flutter::signing]/resources/import_certificate.sh"
+    ],
+    "env": {
+      "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_1/codesign",
+      "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
+      "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
+      "FLUTTER_P12_PASSWORD": "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "P12_SUFFIX_FILEPATH": "[CLEANUP]/flutter.p12"
+    },
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup keychain.import certificate",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "set-key-partition-list",
+      "-S",
+      "apple-tool:,apple:,codesign:",
+      "-s",
+      "-k",
+      "",
+      "build.keychain"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup keychain.set key partition list",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "find-identity",
+      "-v"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Setup keychain.show-identities",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Global generators.Keychain cleanup",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "delete-keychain",
+      "build.keychain"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Keychain cleanup.delete keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "security",
+      "default-keychain",
+      "-s",
+      "login.keychain"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Keychain cleanup.Cleanup keychain.restore default keychain",
+    "~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",
+      "[CLEANUP]/tmp_tmp_2/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Ensure flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "/a/b/c.txt",
+      "[CLEANUP]/tmp_tmp_2/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Copy /a/b/c.txt to tmp location",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_2/*",
+      "gs://flutter_archives_v2/"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.gsutil Upload /a/b/c.txt to gs://flutter_archives_v2/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket/c.txt",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "sudo",
+      "xcode-select",
+      "--reset"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.reset XCode",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "collect tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "display tests (2)"
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipes/engine_v2/engine_v2.expected/config_from_file.json b/recipes/engine_v2/engine_v2.expected/config_from_file.json
index 27d1306..c8f1a4c 100644
--- a/recipes/engine_v2/engine_v2.expected/config_from_file.json
+++ b/recipes/engine_v2/engine_v2.expected/config_from_file.json
@@ -229,6 +229,19 @@
       "@@@STEP_LOG_LINE@config_name.json@  ],@@@",
       "@@@STEP_LOG_LINE@config_name.json@  \"builds\": [@@@",
       "@@@STEP_LOG_LINE@config_name.json@    {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"base_path\": \"out/host_debug/zip_archives/\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"name\": \"host_debug\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ],@@@",
       "@@@STEP_LOG_LINE@config_name.json@      \"generators\": [@@@",
       "@@@STEP_LOG_LINE@config_name.json@        {@@@",
       "@@@STEP_LOG_LINE@config_name.json@          \"name\": \"generator1\",@@@",
@@ -330,7 +343,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"build\": {\"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}}, \"config_name\": \"config_name\", \"environment\": \"Staging\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"archives\": [{\"base_path\": \"out/host_debug/zip_archives/\", \"include_paths\": [\"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"], \"name\": \"host_debug\", \"type\": \"gcs\"}], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}, \"recipe\": \"engine_v2/builder\"}, \"config_name\": \"config_name\", \"environment\": \"Staging\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -379,9 +392,22 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"base_path\": \"out/host_debug/zip_archives/\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@request@                ], @@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"host_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
       "@@@STEP_LOG_LINE@request@            \"generators\": [@@@",
       "@@@STEP_LOG_LINE@request@              {@@@",
       "@@@STEP_LOG_LINE@request@                \"name\": \"generator1\", @@@",
@@ -395,7 +421,8 @@
       "@@@STEP_LOG_LINE@request@            \"ninja\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"config\": \"ios_debug\", @@@",
       "@@@STEP_LOG_LINE@request@              \"targets\": []@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"config_name\": \"config_name\", @@@",
       "@@@STEP_LOG_LINE@request@          \"environment\": \"Staging\", @@@",
@@ -853,110 +880,16 @@
     ]
   },
   {
-    "cmd": [
-      "git",
-      "rev-parse",
-      "HEAD"
-    ],
-    "cwd": "[CACHE]/builder/src/flutter",
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "git rev-parse"
+    "cmd": [],
+    "name": "launch tests (2)"
   },
   {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Ensure flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket"
+    "cmd": [],
+    "name": "collect tests (2)"
   },
   {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "/a/b/c.txt",
-      "[CLEANUP]/tmp_tmp_1/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "Copy gs://flutter_archives_v2/flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket/c.txt"
-  },
-  {
-    "cmd": [
-      "python3",
-      "-u",
-      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
-      "--",
-      "RECIPE_REPO[depot_tools]/gsutil.py",
-      "----",
-      "cp",
-      "-r",
-      "[CLEANUP]/tmp_tmp_1/*",
-      "gs://flutter_archives_v2/"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "proj:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gsutil flutter_infra_release/flutter/12345abcde12345abcde12345abcde12345abcde/bucket/c.txt",
-    "~followup_annotations": [
-      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
-    ]
+    "cmd": [],
+    "name": "display tests (2)"
   },
   {
     "name": "$result"
diff --git a/recipes/engine_v2/engine_v2.expected/monorepo_config_file.json b/recipes/engine_v2/engine_v2.expected/monorepo_config_file.json
index 6684ae5..8368722 100644
--- a/recipes/engine_v2/engine_v2.expected/monorepo_config_file.json
+++ b/recipes/engine_v2/engine_v2.expected/monorepo_config_file.json
@@ -222,6 +222,19 @@
       "@@@STEP_LOG_LINE@config_name.json@{@@@",
       "@@@STEP_LOG_LINE@config_name.json@  \"builds\": [@@@",
       "@@@STEP_LOG_LINE@config_name.json@    {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"base_path\": \"out/host_debug/zip_archives/\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"name\": \"host_debug\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ],@@@",
       "@@@STEP_LOG_LINE@config_name.json@      \"generators\": [@@@",
       "@@@STEP_LOG_LINE@config_name.json@        {@@@",
       "@@@STEP_LOG_LINE@config_name.json@          \"name\": \"generator1\",@@@",
@@ -379,7 +392,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci.sandbox\", \"builder\": \"Linux Engine Drone\", \"project\": \"dart\"}, \"exe\": {\"cipdVersion\": \"refs/heads/None\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"monorepo\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"build\": {\"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}}, \"config_name\": \"config_name\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci.sandbox\", \"builder\": \"Linux Engine Drone\", \"project\": \"dart\"}, \"exe\": {\"cipdVersion\": \"refs/heads/None\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"monorepo\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"archives\": [{\"base_path\": \"out/host_debug/zip_archives/\", \"include_paths\": [\"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"], \"name\": \"host_debug\", \"type\": \"gcs\"}], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}, \"recipe\": \"engine_v2/builder\"}, \"config_name\": \"config_name\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -420,9 +433,22 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"monorepo\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"base_path\": \"out/host_debug/zip_archives/\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@request@                ], @@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"host_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
       "@@@STEP_LOG_LINE@request@            \"generators\": [@@@",
       "@@@STEP_LOG_LINE@request@              {@@@",
       "@@@STEP_LOG_LINE@request@                \"name\": \"generator1\", @@@",
@@ -436,7 +462,8 @@
       "@@@STEP_LOG_LINE@request@            \"ninja\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"config\": \"ios_debug\", @@@",
       "@@@STEP_LOG_LINE@request@              \"targets\": []@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"config_name\": \"config_name\", @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
@@ -615,6 +642,74 @@
     "name": "display tests"
   },
   {
+    "cmd": [],
+    "name": "Identify branches (3)"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (3).git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (3).git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "collect tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "display tests (2)"
+  },
+  {
     "name": "$result"
   }
 ]
\ No newline at end of file
diff --git a/recipes/engine_v2/engine_v2.expected/monorepo_config_file_tests.json b/recipes/engine_v2/engine_v2.expected/monorepo_config_file_tests.json
new file mode 100644
index 0000000..6652584
--- /dev/null
+++ b/recipes/engine_v2/engine_v2.expected/monorepo_config_file_tests.json
@@ -0,0 +1,1668 @@
+[
+  {
+    "cmd": [],
+    "name": "Checkout flutter/monorepo"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+      "--path",
+      "[START_DIR]/monorepo",
+      "--url",
+      "https://dart.googlesource.com/monorepo"
+    ],
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/monorepo.git setup",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "fetch",
+      "origin",
+      "--recurse-submodules",
+      "--progress",
+      "--tags"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "env": {
+      "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/monorepo.git fetch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "checkout",
+      "-f",
+      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/monorepo.git checkout",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/monorepo.read revision",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "clean",
+      "-f",
+      "-d",
+      "-x"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/monorepo.git clean",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "submodule",
+      "sync"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/monorepo.submodule sync",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "submodule",
+      "update",
+      "--init",
+      "--recursive"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout flutter/monorepo.submodule update",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[START_DIR]/monorepo/ci/builders/config_name.json",
+      "/path/to/tmp/"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Read build config file",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@config_name.json@{@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"destination\": \"bucket/c.txt\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"name\": \"c.txt\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"source\": \"/a/b/c.txt\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  \"builds\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"base_path\": \"out/host_debug/zip_archives/\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@            \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"name\": \"host_debug\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"generators\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"name\": \"generator1\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"script\": \"script1.sh\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"gn\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"--ios\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"name\": \"ios_debug\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"ninja\": {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"config\": \"ios_debug\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"targets\": []@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  \"generators\": {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"language\": \"python3\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"name\": \"Debug-FlutterMacOS.framework\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"parameters\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"--variant\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"host_profile\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"--type\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"engine\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"--engine-capture-core-dump\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        ],@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"script\": \"flutter/sky/tools/create_macos_framework.py\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        \"type\": \"local\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    ]@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  },@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  \"tests\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"name\": \"framework_tests libraries\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"shard\": \"framework_tests\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"subshard\": \"libraries\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      \"test_dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        {@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"dependency\": \"android_sdk\",@@@",
+      "@@@STEP_LOG_LINE@config_name.json@          \"version\": \"version:33v6\"@@@",
+      "@@@STEP_LOG_LINE@config_name.json@        }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@      ]@@@",
+      "@@@STEP_LOG_LINE@config_name.json@    }@@@",
+      "@@@STEP_LOG_LINE@config_name.json@  ]@@@",
+      "@@@STEP_LOG_LINE@config_name.json@}@@@",
+      "@@@STEP_LOG_END@config_name.json@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches.git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Identify branches (2)"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (2).git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[START_DIR]/monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (2).git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch builds"
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "launch builds.schedule",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci.sandbox\", \"builder\": \"Linux Engine Drone\", \"project\": \"dart\"}, \"exe\": {\"cipdVersion\": \"refs/heads/None\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"monorepo\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"archives\": [{\"base_path\": \"out/host_debug/zip_archives/\", \"include_paths\": [\"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"], \"name\": \"host_debug\", \"type\": \"gcs\"}], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}, \"recipe\": \"engine_v2/builder\"}, \"config_name\": \"config_name\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
+      "@@@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@        \"id\": \"8945511751514863186\"@@@",
+      "@@@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@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"bucket\": \"ci.sandbox\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"dart\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/None\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"experimental\": \"NO\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"experiments\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"luci.buildbucket.parent_tracking\": false@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"host\": \"dart.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"monorepo\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
+      "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"base_path\": \"out/host_debug/zip_archives/\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@request@                ], @@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"host_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
+      "@@@STEP_LOG_LINE@request@            \"generators\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"generator1\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"script\": \"script1.sh\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
+      "@@@STEP_LOG_LINE@request@            \"gn\": [@@@",
+      "@@@STEP_LOG_LINE@request@              \"--ios\"@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
+      "@@@STEP_LOG_LINE@request@            \"name\": \"ios_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"ninja\": {@@@",
+      "@@@STEP_LOG_LINE@request@              \"config\": \"ios_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"targets\": []@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          \"config_name\": \"config_name\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
+      "@@@STEP_LOG_LINE@request@          \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"parentRunId\": \"fake-task-id\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"parent_buildbucket_id\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"user_agent\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"recipe\"@@@",
+      "@@@STEP_LOG_LINE@request@          }@@@",
+      "@@@STEP_LOG_LINE@request@        ]@@@",
+      "@@@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@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect builds"
+  },
+  {
+    "cmd": [],
+    "name": "collect builds.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "20s",
+      "8945511751514863186"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "collect builds.collect.wait",
+    "timeout": 86400,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "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\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@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@@@",
+      "@@@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@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "display builds"
+  },
+  {
+    "cmd": [],
+    "name": "display builds.ios_debug",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch tests"
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "launch tests.schedule",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci.sandbox\", \"builder\": \"Linux Engine Drone\", \"project\": \"dart\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"monorepo\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"name\": \"framework_tests libraries\", \"recipe\": \"engine_v2/tester\", \"resolved_deps\": [], \"shard\": \"framework_tests\", \"subshard\": \"libraries\", \"test_dependencies\": [{\"dependency\": \"android_sdk\", \"version\": \"version:33v6\"}]}, \"config_name\": \"config_name\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/tester\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133a\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"subtest1\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"fuchsia\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }, @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8945511751514863187\"@@@",
+      "@@@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@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"bucket\": \"ci.sandbox\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"dart\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"experimental\": \"NO\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"experiments\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"luci.buildbucket.parent_tracking\": false@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"host\": \"dart.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"monorepo\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
+      "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"name\": \"framework_tests libraries\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/tester\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"resolved_deps\": [], @@@",
+      "@@@STEP_LOG_LINE@request@            \"shard\": \"framework_tests\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"subshard\": \"libraries\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"test_dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"dependency\": \"android_sdk\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"version\": \"version:33v6\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ]@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          \"config_name\": \"config_name\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
+      "@@@STEP_LOG_LINE@request@          \"recipe\": \"engine_v2/tester\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133a\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"parentRunId\": \"fake-task-id\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"parent_buildbucket_id\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"user_agent\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"recipe\"@@@",
+      "@@@STEP_LOG_LINE@request@          }@@@",
+      "@@@STEP_LOG_LINE@request@        ]@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8945511751514863187@https://cr-buildbucket.appspot.com/build/8945511751514863187@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect tests"
+  },
+  {
+    "cmd": [],
+    "name": "collect tests.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "20s",
+      "8945511751514863187"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "collect tests.collect.wait",
+    "timeout": 86400,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "collect tests.collect.get",
+    "stdin": "{\"requests\": [{\"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@  \"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\": \"subtest1\", @@@",
+      "@@@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@}@@@",
+      "@@@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,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@8945511751514863187@https://cr-buildbucket.appspot.com/build/8945511751514863187@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "display tests"
+  },
+  {
+    "cmd": [],
+    "name": "display tests.framework_tests libraries",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@8945511751514863187@https://cr-buildbucket.appspot.com/build/8945511751514863187@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CACHE]/builder"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Ensure full engine checkout folder"
+  },
+  {
+    "cmd": [],
+    "name": "Checkout source code"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+      "--spec-path",
+      "cache_dir = '[CACHE]/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'monorepo', 'url': 'https://dart.googlesource.com/monorepo'}]",
+      "--revision_mapping_file",
+      "{\"got_buildroot_revision\": \"engine/src\", \"got_dart_revision\": \"engine/src/third_party/dart\", \"got_engine_revision\": \"engine/src/flutter\", \"got_flutter_revision\": \"flutter\", \"got_monorepo_revision\": \"monorepo\"}",
+      "--git-cache-dir",
+      "[CACHE]/git",
+      "--cleanup-dir",
+      "[CLEANUP]/bot_update",
+      "--output_json",
+      "/path/to/tmp/json",
+      "--revision",
+      "monorepo@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+      "--refs",
+      "refs/heads/main"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "DEPOT_TOOLS_REPORT_BUILD": "dart/ci.sandbox/monorepo_builder/8945511751514863184",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder/engine",
+      "GIT_BRANCH": "",
+      "GIT_HTTP_LOW_SPEED_LIMIT": "102400",
+      "GIT_HTTP_LOW_SPEED_TIME": "1800",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0",
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]",
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout source code.bot_update",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_TEXT@Some step text@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"did_run\": true, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"fixed_revisions\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"monorepo\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"manifest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"engine/src\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/engine/src.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"851705163d0a071411a2461348b2fa0f4365dd2b\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"engine/src/flutter\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/engine/src/flutter.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"8d715353df333b3d997121c3d17cfe043f0a33ee\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"engine/src/third_party/dart\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/engine/src/third_party/dart.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"56b272d88fce292881d9d6a89d1a88b53f868a7f\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"flutter\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/flutter.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"ff25d17873bba4bc564d8c7217280aa254ed4541\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"monorepo\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/monorepo.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"patch_failure\": false, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"patch_root\": \"monorepo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_buildroot_revision\": \"851705163d0a071411a2461348b2fa0f4365dd2b\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_buildroot_revision_cp\": \"refs/heads/main@{#278358}\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_dart_revision\": \"56b272d88fce292881d9d6a89d1a88b53f868a7f\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_dart_revision_cp\": \"refs/heads/main@{#135384}\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_engine_revision\": \"8d715353df333b3d997121c3d17cfe043f0a33ee\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_engine_revision_cp\": \"refs/heads/main@{#14355}\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_flutter_revision\": \"ff25d17873bba4bc564d8c7217280aa254ed4541\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_flutter_revision_cp\": \"refs/heads/main@{#268536}\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_monorepo_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_monorepo_revision_cp\": \"refs/heads/main@{#255931}\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"got_revision\": \"46cec4dbb087a7b43490e8c82b6899fa32937bd9\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"root\": \"monorepo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"source_manifest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"directories\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"engine/src\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"git_checkout\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"repo_url\": \"https://fake.org/engine/src.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"revision\": \"851705163d0a071411a2461348b2fa0f4365dd2b\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"engine/src/flutter\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"git_checkout\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"repo_url\": \"https://fake.org/engine/src/flutter.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"revision\": \"8d715353df333b3d997121c3d17cfe043f0a33ee\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"engine/src/third_party/dart\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"git_checkout\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"repo_url\": \"https://fake.org/engine/src/third_party/dart.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"revision\": \"56b272d88fce292881d9d6a89d1a88b53f868a7f\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"flutter\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"git_checkout\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"repo_url\": \"https://fake.org/flutter.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"revision\": \"ff25d17873bba4bc564d8c7217280aa254ed4541\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"monorepo\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"git_checkout\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"repo_url\": \"https://fake.org/monorepo.git\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"version\": 0@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"step_text\": \"Some step text\"@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@SET_BUILD_PROPERTY@got_buildroot_revision@\"851705163d0a071411a2461348b2fa0f4365dd2b\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_buildroot_revision_cp@\"refs/heads/main@{#278358}\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_dart_revision@\"56b272d88fce292881d9d6a89d1a88b53f868a7f\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_dart_revision_cp@\"refs/heads/main@{#135384}\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_engine_revision@\"8d715353df333b3d997121c3d17cfe043f0a33ee\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_engine_revision_cp@\"refs/heads/main@{#14355}\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_flutter_revision@\"ff25d17873bba4bc564d8c7217280aa254ed4541\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_flutter_revision_cp@\"refs/heads/main@{#268536}\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_monorepo_revision@\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_monorepo_revision_cp@\"refs/heads/main@{#255931}\"@@@",
+      "@@@SET_BUILD_PROPERTY@got_revision@\"46cec4dbb087a7b43490e8c82b6899fa32937bd9\"@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_REPO[depot_tools]/gclient.py",
+      "runhooks"
+    ],
+    "cwd": "[CACHE]/builder",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "DEPOT_TOOLS_REPORT_BUILD": "dart/ci.sandbox/monorepo_builder/8945511751514863184",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder/engine",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "env_suffixes": {
+      "DEPOT_TOOLS_UPDATE": [
+        "0"
+      ],
+      "PATH": [
+        "RECIPE_REPO[depot_tools]",
+        "RECIPE_REPO[depot_tools]"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Checkout source code.gclient runhooks",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "rmtree",
+      "[CACHE]/builder/engine/src/out"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Clobber build download folder"
+  },
+  {
+    "cmd": [],
+    "name": "Global generators"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "listdir",
+      "[CACHE]/builder/engine/src/out",
+      "--recursive"
+    ],
+    "cwd": "[CACHE]/builder/engine",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder/engine",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.List checkout",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_END@listdir@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "[CACHE]/builder/engine/src/flutter/sky/tools/create_macos_framework.py",
+      "--variant",
+      "host_profile",
+      "--type",
+      "engine",
+      "--engine-capture-core-dump"
+    ],
+    "cwd": "[CACHE]/builder/engine",
+    "env": {
+      "ANDROID_HOME": "[CACHE]/builder/engine/src/third_party/android_tools/sdk",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "ENGINE_CHECKOUT_PATH": "[CACHE]/builder/engine",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "LUCI_WORKDIR": "[START_DIR]",
+      "OS": "linux",
+      "REVISION": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[CACHE]/builder/engine/src/third_party/dart/tools/sdks/dart-sdk/bin",
+        "[CACHE]/builder/engine/src/third_party/dart/tools/sdks/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Debug-FlutterMacOS.framework",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/../../monorepo",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Global generators.Identify branches",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Identify branches.git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[CACHE]/builder/engine/src/flutter",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Identify branches.git branch",
+    "~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",
+      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Ensure monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "/a/b/c.txt",
+      "[CLEANUP]/tmp_tmp_1/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.Copy /a/b/c.txt to tmp location",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/tmp_tmp_1/*",
+      "gs://flutter_archives_v2/"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Global generators.gsutil Upload /a/b/c.txt to gs://flutter_archives_v2/monorepo/flutter_infra_release/flutter/experimental/12345abcde12345abcde12345abcde12345abcde/bucket/c.txt",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_archives_v2/@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch tests (2)"
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "launch tests (2).schedule",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci.sandbox\", \"builder\": \"Linux Engine Drone\", \"project\": \"dart\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"monorepo\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"build\": {\"name\": \"framework_tests libraries\", \"recipe\": \"engine_v2/tester\", \"resolved_deps\": [], \"shard\": \"framework_tests\", \"subshard\": \"libraries\", \"test_dependencies\": [{\"dependency\": \"android_sdk\", \"version\": \"version:33v6\"}]}, \"config_name\": \"config_name\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/tester\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133d\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"ci.sandbox\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }, @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514002\"@@@",
+      "@@@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@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"scheduleBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"bucket\": \"ci.sandbox\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"dart\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"experimental\": \"NO\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"experiments\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"luci.buildbucket.parent_tracking\": false@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"host\": \"dart.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"monorepo\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
+      "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"name\": \"framework_tests libraries\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/tester\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"resolved_deps\": [], @@@",
+      "@@@STEP_LOG_LINE@request@            \"shard\": \"framework_tests\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"subshard\": \"libraries\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"test_dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"dependency\": \"android_sdk\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"version\": \"version:33v6\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ]@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          \"config_name\": \"config_name\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
+      "@@@STEP_LOG_LINE@request@          \"recipe\": \"engine_v2/tester\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133d\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@request@          \"parentRunId\": \"fake-task-id\"@@@",
+      "@@@STEP_LOG_LINE@request@        }, @@@",
+      "@@@STEP_LOG_LINE@request@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"parent_buildbucket_id\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@request@          }, @@@",
+      "@@@STEP_LOG_LINE@request@          {@@@",
+      "@@@STEP_LOG_LINE@request@            \"key\": \"user_agent\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"value\": \"recipe\"@@@",
+      "@@@STEP_LOG_LINE@request@          }@@@",
+      "@@@STEP_LOG_LINE@request@        ]@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8922054662172514002@https://cr-buildbucket.appspot.com/build/8922054662172514002@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "collect tests (2).collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "20s",
+      "8922054662172514002"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "collect tests (2).collect.wait",
+    "timeout": 86400,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart:ci.sandbox"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "collect tests (2).collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8922054662172514002\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8922054662172514002\", @@@",
+      "@@@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@@@",
+      "@@@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\": \"8922054662172514002\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8922054662172514002@https://cr-buildbucket.appspot.com/build/8922054662172514002@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "display tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "display tests (2).framework_tests libraries",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@8922054662172514002@https://cr-buildbucket.appspot.com/build/8922054662172514002@@@"
+    ]
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipes/engine_v2/engine_v2.expected/monorepo_try.json b/recipes/engine_v2/engine_v2.expected/monorepo_try.json
index b595513..844079c 100644
--- a/recipes/engine_v2/engine_v2.expected/monorepo_try.json
+++ b/recipes/engine_v2/engine_v2.expected/monorepo_try.json
@@ -24,7 +24,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci.sandbox\", \"builder\": \"Linux Engine Drone-try\", \"project\": \"dart\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"9425\", \"host\": \"dart-review.googlesource.com\", \"patchset\": \"3\", \"project\": \"sdk\"}], \"priority\": 25, \"properties\": {\"build\": {\"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}}, \"builder_name_suffix\": \"-try\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci.sandbox\", \"builder\": \"Linux Engine Drone-try\", \"project\": \"dart\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"9425\", \"host\": \"dart-review.googlesource.com\", \"patchset\": \"3\", \"project\": \"sdk\"}], \"priority\": 30, \"properties\": {\"build\": {\"archives\": [{\"base_path\": \"out/host_debug/zip_archives/\", \"include_paths\": [\"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"], \"name\": \"host_debug\", \"type\": \"gcs\"}], \"generators\": [{\"name\": \"generator1\", \"script\": \"script1.sh\"}], \"gn\": [\"--ios\"], \"name\": \"ios_debug\", \"ninja\": {\"config\": \"ios_debug\", \"targets\": []}, \"recipe\": \"engine_v2/builder\"}, \"builder_name_suffix\": \"-try\", \"gclient_variables\": {}, \"recipe\": \"engine_v2/builder\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -67,9 +67,22 @@
       "@@@STEP_LOG_LINE@request@            \"project\": \"sdk\"@@@",
       "@@@STEP_LOG_LINE@request@          }@@@",
       "@@@STEP_LOG_LINE@request@        ], @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
+      "@@@STEP_LOG_LINE@request@            \"archives\": [@@@",
+      "@@@STEP_LOG_LINE@request@              {@@@",
+      "@@@STEP_LOG_LINE@request@                \"base_path\": \"out/host_debug/zip_archives/\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"include_paths\": [@@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/artifacts.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/dart-sdk-darwin-x64.zip\", @@@",
+      "@@@STEP_LOG_LINE@request@                  \"out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip\"@@@",
+      "@@@STEP_LOG_LINE@request@                ], @@@",
+      "@@@STEP_LOG_LINE@request@                \"name\": \"host_debug\", @@@",
+      "@@@STEP_LOG_LINE@request@                \"type\": \"gcs\"@@@",
+      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
       "@@@STEP_LOG_LINE@request@            \"generators\": [@@@",
       "@@@STEP_LOG_LINE@request@              {@@@",
       "@@@STEP_LOG_LINE@request@                \"name\": \"generator1\", @@@",
@@ -83,7 +96,8 @@
       "@@@STEP_LOG_LINE@request@            \"ninja\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"config\": \"ios_debug\", @@@",
       "@@@STEP_LOG_LINE@request@              \"targets\": []@@@",
-      "@@@STEP_LOG_LINE@request@            }@@@",
+      "@@@STEP_LOG_LINE@request@            }, @@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine_v2/builder\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"builder_name_suffix\": \"-try\", @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
@@ -266,6 +280,18 @@
     "name": "display tests"
   },
   {
+    "cmd": [],
+    "name": "launch tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "collect tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "display tests (2)"
+  },
+  {
     "name": "$result"
   }
 ]
\ No newline at end of file
diff --git a/recipes/engine_v2/engine_v2.expected/overridden_config_from_file.json b/recipes/engine_v2/engine_v2.expected/overridden_config_from_file.json
index d2781f3..058f68d 100644
--- a/recipes/engine_v2/engine_v2.expected/overridden_config_from_file.json
+++ b/recipes/engine_v2/engine_v2.expected/overridden_config_from_file.json
@@ -312,6 +312,74 @@
     "name": "display tests"
   },
   {
+    "cmd": [],
+    "name": "Identify branches (2)"
+  },
+  {
+    "cmd": [
+      "git",
+      "rev-parse",
+      "HEAD"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (2).git rev-parse",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "git",
+      "branch",
+      "-a",
+      "--contains",
+      "12345abcde12345abcde12345abcde12345abcde"
+    ],
+    "cwd": "[START_DIR]/engine",
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "proj:try"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Identify branches (2).git branch",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "collect tests (2)"
+  },
+  {
+    "cmd": [],
+    "name": "display tests (2)"
+  },
+  {
     "name": "$result"
   }
 ]
\ No newline at end of file
diff --git a/recipes/engine_v2/engine_v2.py b/recipes/engine_v2/engine_v2.py
index 4f91914..f1669f1 100644
--- a/recipes/engine_v2/engine_v2.py
+++ b/recipes/engine_v2/engine_v2.py
@@ -24,9 +24,9 @@
 
 from RECIPE_MODULES.flutter.flutter_bcid.api import BcidStage
 
-
 DEPS = [
     'flutter/archives',
+    'flutter/signing',
     'flutter/display_util',
     'flutter/flutter_bcid',
     'flutter/flutter_deps',
@@ -98,8 +98,9 @@
   if checkout_path and api.repo_util.is_release_candidate_branch(checkout_path):
     current_branch = api.repo_util.release_candidate_branch(checkout_path)
   with api.step.nest('launch builds') as presentation:
-    tasks = api.shard_util_v2.schedule_builds(builds, presentation,
-                                              branch=current_branch)
+    tasks = api.shard_util_v2.schedule_builds(
+        builds, presentation, branch=current_branch
+    )
   with api.step.nest('collect builds') as presentation:
     build_results = api.shard_util_v2.collect(tasks, presentation)
 
@@ -121,14 +122,22 @@
       raise_on_failure=True,
   )
 
+  signing_file_list = []
 
   # Global generators
-  if generators or archives:
-    # Generators and archives require a full engine checkout.
+  if generators or archives or (
+      checkout_path and
+      api.repo_util.is_release_candidate_branch(checkout_path)):
+    # Generators, archives and codesign require a full engine checkout.
     full_engine_checkout = api.path['cache'].join('builder')
     api.file.ensure_directory('Ensure full engine checkout folder', full_engine_checkout)
-    env, env_prefixes = api.repo_util.engine_environment(full_engine_checkout)
-    api.repo_util.engine_checkout(full_engine_checkout, env, env_prefixes)
+    if api.monorepo.is_monorepo_ci_build or api.monorepo.is_monorepo_try_build:
+      env, env_prefixes = api.repo_util.monorepo_environment(full_engine_checkout)
+      api.repo_util.monorepo_checkout(full_engine_checkout, env, env_prefixes)
+      full_engine_checkout = full_engine_checkout.join('engine')
+    else:
+      env, env_prefixes = api.repo_util.engine_environment(full_engine_checkout)
+      api.repo_util.engine_checkout(full_engine_checkout, env, env_prefixes)
 
   if generators:
     # Download sub-builds
@@ -140,33 +149,80 @@
         api.flutter_bcid.report_stage(BcidStage.COMPILE.value)
         if api.platform.is_mac:
           with api.osx_sdk('ios'):
-            _run_global_generators(api, generators, full_engine_checkout, env, env_prefixes)
+            _run_global_generators(
+                api, generators, full_engine_checkout, env, env_prefixes
+            )
+            _archive(api, archives, full_engine_checkout)
         else:
-          _run_global_generators(api, generators, full_engine_checkout, env, env_prefixes)
-    api.file.listdir('Final List checkout', full_engine_checkout.join('src', 'out'), recursive=True)
-    api.file.listdir('Final List checkout 2', full_engine_checkout.join('src', 'flutter', 'sky'), recursive=True)
-  # Global archives
-  if archives:
-    api.flutter_bcid.report_stage(BcidStage.UPLOAD.value)
-    # Global archives are stored in out folder from full_engine_checkout inside
-    # release, debug or profile depending on the runtime mode.
-    # So far we are uploading files only.
-    bucket = 'flutter_archives_v2'
-    for archive in archives:
-      source = full_engine_checkout.join('src', archive.get('source'))
-      commit = api.repo_util.get_commit(
-          full_engine_checkout.join('src', 'flutter')
-      )
-      artifact_path = 'flutter_infra_release/flutter/%s/%s' % (
-          commit, archive.get('destination')
-      )
-      dst = 'gs://%s/%s' % (bucket, artifact_path)
-      api.archives.upload_artifact(source, dst)
-      api.flutter_bcid.upload_provenance(source, dst)
-    api.flutter_bcid.report_stage(BcidStage.UPLOAD_COMPLETE.value)
+          _run_global_generators(
+              api, generators, full_engine_checkout, env, env_prefixes
+          )
+          _archive(api, archives, full_engine_checkout)
+
+  # Run tests
+  with api.step.nest('launch tests') as presentation:
+    tasks = api.shard_util_v2.schedule_tests(tests, build_results, presentation)
+  with api.step.nest('collect tests') as presentation:
+    test_results = api.shard_util_v2.collect(tasks, presentation)
+
+  api.display_util.display_subbuilds(
+      step_name='display tests',
+      subbuilds=test_results,
+      raise_on_failure=True,
+  )
 
 
-def _run_global_generators(api, generators, full_engine_checkout, env, env_prefixes):
+def _archive(api, archives, full_engine_checkout):
+  """Proces global archives.
+
+  Args:
+    api: Object point to all the imported modules of this build.
+    archives: List of global archive configurations.
+    full_engine_path: Path to a gclient engine checkout.
+  """
+  if not archives:
+    return
+
+  api.flutter_bcid.report_stage(BcidStage.UPLOAD.value)
+  # Global archives are stored in out folder from full_engine_checkout inside
+  # release, debug or profile depending on the runtime mode.
+  # So far we are uploading files only.
+  files_to_archive = api.archives.global_generator_paths(
+      full_engine_checkout.join('src'), archives)
+
+  # Sign artifacts if running in mac.
+  is_release_candidate = api.repo_util.is_release_candidate_branch(
+      full_engine_checkout.join('src', 'flutter')
+  )
+  signing_paths = [
+        path.local for path in files_to_archive
+        if api.signing.requires_signing(path.local)
+  ]
+  if api.platform.is_mac and is_release_candidate:
+    signing_paths = [
+        path.local for path in files_to_archive
+        if api.signing.requires_signing(path.local)
+    ]
+    api.signing.code_sign(signing_paths)
+  for archive in files_to_archive:
+    api.archives.upload_artifact(archive.local, archive.remote)
+    api.flutter_bcid.upload_provenance(archive.local, archive.remote)
+  api.flutter_bcid.report_stage(BcidStage.UPLOAD_COMPLETE.value)
+
+
+def _run_global_generators(
+    api, generators, full_engine_checkout, env, env_prefixes
+):
+  """Runs global generator tasks.
+
+  Args:
+    generators: list(dict) global generator configurations used to run scripts
+        over subbuild outputs to generate artifacts.
+    full_engine_checkout: (Path) the checkout directory.
+    env: (dict) a dictionary with environment variables to set.
+    env_prefixes: (dict) a dictionary with lists of values associated to env
+        variables with priority based on the order.
+  """
   # Install dependencies. If this is running from within an xcode context it will use
   # xcode's ruby.
   deps = api.properties.get('dependencies', [])
@@ -194,7 +250,15 @@
       status="SUCCESS",
   )
   builds = [{
-      "name": "ios_debug", "gn": ["--ios"],
+      "archives": [{
+          "base_path": "out/host_debug/zip_archives/", "type": "gcs",
+          "include_paths": [
+              "out/host_debug/zip_archives/darwin-x64/artifacts.zip",
+              "out/host_debug/zip_archives/darwin-x64/FlutterEmbedder.framework.zip",
+              "out/host_debug/zip_archives/dart-sdk-darwin-x64.zip",
+              "out/host_debug/zip_archives/flutter-web-sdk-darwin-x64.zip"
+          ], "name": "host_debug"
+      }], "name": "ios_debug", "gn": ["--ios"],
       "ninja": {"config": "ios_debug", "targets": []},
       "generators": [{"name": "generator1", "script": "script1.sh"}]
   }]
@@ -216,19 +280,12 @@
                   }
               ]
   }
-  archives = [
-      {
-          'source': '/a/b/c.txt',
-          'destination': 'bucket/c.txt',
-          'name': 'c.txt'
-
-      }
-  ]
-
+  archives = [{
+      'source': '/a/b/c.txt', 'destination': 'bucket/c.txt', 'name': 'c.txt'
+  }]
 
   yield api.test(
-      'basic_mac',
-      api.platform.name('mac'),
+      'basic_mac', api.platform.name('mac'),
       api.properties(
           builds=builds,
           tests=[],
@@ -250,7 +307,7 @@
           collect_step="collect builds",
       ),
       api.step_data(
-          'git rev-parse',
+          'Global generators.git rev-parse',
           stdout=api.raw_io
           .output_text('12345abcde12345abcde12345abcde12345abcde\n')
       )
@@ -295,19 +352,12 @@
           'Read build config file',
           api.file.read_json({'builds': builds, 'archives': archives})
       ),
-      api.step_data(
-          'git rev-parse',
-          stdout=api.raw_io
-          .output_text('12345abcde12345abcde12345abcde12345abcde\n')
-      )
   )
 
   yield api.test(
       'overridden_config_from_file',
       api.properties(
-          config_name='overridden_config_name',
-          archives=[],
-          generators=[]
+          config_name='overridden_config_name', archives=[], generators=[]
       ),
       api.buildbucket.try_build(
           project='proj',
@@ -336,7 +386,7 @@
   yield api.test(
       'monorepo_config_file',
       api.platform.name('linux'),
-      api.properties(config_name='config_name', builds=builds),
+      api.properties(config_name='config_name'),
       api.monorepo.ci_build(),
       api.shard_util_v2.child_build_steps(
           subbuilds=[try_subbuild1],
@@ -352,3 +402,94 @@
           .output_text('branch1\nbranch2\nflutter-3.2-candidate.5')
       ),
   )
+
+  yield api.test(
+      'codesign_release_branch',
+      api.platform.name('mac'),
+      api.properties(config_name='config_name', environment='Staging'),
+      api.buildbucket.try_build(
+          project='proj',
+          builder='try-builder',
+          git_repo='https://flutter.googlesource.com/mirrors/engine',
+          revision='a' * 40,
+          build_number=123,
+      ),
+      api.shard_util_v2.child_build_steps(
+          subbuilds=[try_subbuild1],
+          launch_step="launch builds",
+          collect_step="collect builds",
+      ),
+      api.step_data(
+          'Read build config file',
+          api.file.read_json(
+              {
+                  'builds': builds,
+                  'archives': archives,
+                  'generators': generators
+              }
+          )
+      ),
+      api.step_data(
+          'Identify branches.git rev-parse',
+          stdout=api.raw_io
+          .output_text('12345abcde12345abcde12345abcde12345abcde\n')
+      ),
+      api.step_data(
+          'Identify branches.git branch',
+          stdout=api.raw_io
+          .output_text('branch1\nbranch2\nflutter-3.2-candidate.5')
+      ),
+      api.step_data(
+          'Identify branches (2).git branch',
+          stdout=api.raw_io
+          .output_text('branch1\nbranch2\nflutter-3.2-candidate.5')
+      ),
+      api.step_data(
+          'Global generators.Identify branches.git branch',
+          stdout=api.raw_io
+          .output_text('branch1\nbranch2\nflutter-3.2-candidate.5')
+      ),
+      api.signing.flutter_signing_identity('Global generators.Setup keychain.show-identities'),
+  )
+
+  tests = [{
+      "name":
+          "framework_tests libraries", "shard":
+              "framework_tests", "subshard":
+                  "libraries", "test_dependencies": [{
+                      "dependency": "android_sdk", "version": "version:33v6"
+                  }]
+  }]
+
+  subtest1 = api.shard_util_v2.try_build_message(
+      build_id=8945511751514863187,
+      builder="subtest1",
+      output_props={"test_orchestration_inputs_hash": "abc"},
+      status="SUCCESS",
+  )
+
+  yield api.test(
+      'monorepo_config_file_tests',
+      api.platform.name('linux'),
+      api.properties(config_name='config_name'),
+      api.monorepo.ci_build(),
+      api.shard_util_v2.child_build_steps(
+          subbuilds=[try_subbuild1],
+          launch_step="launch builds",
+          collect_step="collect builds",
+      ),
+      api.shard_util_v2.child_build_steps(
+          subbuilds=[subtest1],
+          launch_step="launch tests",
+          collect_step="collect tests",
+      ),
+      api.step_data(
+          'Read build config file', api.file.read_json({'builds': builds,
+          'tests': tests, 'generators': generators, 'archives': archives})
+      ),
+      api.step_data(
+          'Identify branches.git branch',
+          stdout=api.raw_io
+          .output_text('branch1\nbranch2\nflutter-3.2-candidate.5')
+      ),
+  )
diff --git a/recipes/engine_v2/signer.expected/config_from_file.json b/recipes/engine_v2/signer.expected/config_from_file.json
index f4441a2..f8c2f61 100644
--- a/recipes/engine_v2/signer.expected/config_from_file.json
+++ b/recipes/engine_v2/signer.expected/config_from_file.json
@@ -295,7 +295,7 @@
       "[CLEANUP]/tmp_tmp_4/b/c"
     ],
     "infra_step": true,
-    "name": "Copy gs://a/b/c/artifact.zip"
+    "name": "Copy [CLEANUP]/tmp_tmp_3/artifact.zip to tmp location"
   },
   {
     "cmd": [
@@ -311,7 +311,7 @@
       "gs://a/"
     ],
     "infra_step": true,
-    "name": "gsutil b/c/artifact.zip",
+    "name": "gsutil Upload [CLEANUP]/tmp_tmp_3/artifact.zip to gs://a/b/c/artifact.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/a/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_beta_experimental_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_beta_experimental_flutter.json
index 2163b6c..6854d4d 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_beta_experimental_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_beta_experimental_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_beta_experimental_upload_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_beta_experimental_upload_flutter.json
index 2163b6c..6854d4d 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_beta_experimental_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_beta_experimental_upload_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_beta_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_beta_flutter.json
index 6c3d557..af1c1aa 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_beta_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_beta_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1213,7 +1213,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/linux/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1266,7 +1266,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/linux/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/beta/linux/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_beta_prod.json b/recipes/packaging/packaging.expected/linux_refs_heads_beta_prod.json
index c9c3363..1f33a1a 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_beta_prod.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_beta_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/beta/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_beta_upload_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_beta_upload_flutter.json
index 6c3d557..af1c1aa 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_beta_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_beta_upload_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1213,7 +1213,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/linux/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1266,7 +1266,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/linux/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/beta/linux/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_beta_upload_prod.json b/recipes/packaging/packaging.expected/linux_refs_heads_beta_upload_prod.json
index c9c3363..1f33a1a 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_beta_upload_prod.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_beta_upload_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/beta/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_flutter.json
index 485708e..4787329 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_flutter.json
@@ -997,7 +997,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1050,7 +1050,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_prod.json b/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_prod.json
index 6f65b40..2f7fd04 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_prod.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_upload_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_upload_flutter.json
index 485708e..4787329 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_upload_flutter.json
@@ -997,7 +997,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1050,7 +1050,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_upload_prod.json b/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_upload_prod.json
index 6f65b40..2f7fd04 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_upload_prod.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_flutter-release-test_upload_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_master_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_master_flutter.json
index fbf0622..b9895eb 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_master_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_master_flutter.json
@@ -997,7 +997,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1050,7 +1050,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_master_prod.json b/recipes/packaging/packaging.expected/linux_refs_heads_master_prod.json
index cd8307c..af812ed 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_master_prod.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_master_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_master_upload_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_master_upload_flutter.json
index fbf0622..b9895eb 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_master_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_master_upload_flutter.json
@@ -997,7 +997,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1050,7 +1050,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_master_upload_prod.json b/recipes/packaging/packaging.expected/linux_refs_heads_master_upload_prod.json
index cd8307c..af812ed 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_master_upload_prod.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_master_upload_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_stable_experimental_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_stable_experimental_flutter.json
index 4918fd1..2ab4daf 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_stable_experimental_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_stable_experimental_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_stable_experimental_upload_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_stable_experimental_upload_flutter.json
index 4918fd1..2ab4daf 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_stable_experimental_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_stable_experimental_upload_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_stable_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_stable_flutter.json
index 6f23d8e..5ea9b52 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_stable_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_stable_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1213,7 +1213,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/linux/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1266,7 +1266,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/linux/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/stable/linux/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_stable_prod.json b/recipes/packaging/packaging.expected/linux_refs_heads_stable_prod.json
index 900b40d..2bb26ca 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_stable_prod.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_stable_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/stable/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_stable_upload_flutter.json b/recipes/packaging/packaging.expected/linux_refs_heads_stable_upload_flutter.json
index 6f23d8e..5ea9b52 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_stable_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_stable_upload_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1213,7 +1213,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/linux/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1266,7 +1266,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/linux/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/stable/linux/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/linux_refs_heads_stable_upload_prod.json b/recipes/packaging/packaging.expected/linux_refs_heads_stable_upload_prod.json
index 900b40d..2bb26ca 100644
--- a/recipes/packaging/packaging.expected/linux_refs_heads_stable_upload_prod.json
+++ b/recipes/packaging/packaging.expected/linux_refs_heads_stable_upload_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/stable/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_beta_experimental_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_beta_experimental_flutter.json
index 84d99b2..8219389 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_beta_experimental_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_beta_experimental_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_beta_experimental_upload_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_beta_experimental_upload_flutter.json
index 84d99b2..8219389 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_beta_experimental_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_beta_experimental_upload_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_beta_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_beta_flutter.json
index d88ebb8..60c6fce 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_beta_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_beta_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1213,7 +1213,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/macos/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1266,7 +1266,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/macos/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/macos/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_beta_prod.json b/recipes/packaging/packaging.expected/mac_refs_heads_beta_prod.json
index 3fdf670..ec68cdc 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_beta_prod.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_beta_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_beta_upload_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_beta_upload_flutter.json
index d88ebb8..60c6fce 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_beta_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_beta_upload_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1213,7 +1213,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/macos/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1266,7 +1266,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/macos/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/macos/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_beta_upload_prod.json b/recipes/packaging/packaging.expected/mac_refs_heads_beta_upload_prod.json
index 3fdf670..ec68cdc 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_beta_upload_prod.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_beta_upload_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_flutter.json
index 7b6fcf2..4335b24 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_flutter.json
@@ -997,7 +997,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1050,7 +1050,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_prod.json b/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_prod.json
index e956430..c868374 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_prod.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_upload_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_upload_flutter.json
index 7b6fcf2..4335b24 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_upload_flutter.json
@@ -997,7 +997,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1050,7 +1050,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_upload_prod.json b/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_upload_prod.json
index e956430..c868374 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_upload_prod.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_flutter-release-test_upload_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_master_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_master_flutter.json
index be4e887..2898c1c 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_master_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_master_flutter.json
@@ -997,7 +997,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1050,7 +1050,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_master_prod.json b/recipes/packaging/packaging.expected/mac_refs_heads_master_prod.json
index 268d681..66a90e1 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_master_prod.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_master_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_master_upload_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_master_upload_flutter.json
index be4e887..2898c1c 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_master_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_master_upload_flutter.json
@@ -997,7 +997,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1050,7 +1050,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_master_upload_prod.json b/recipes/packaging/packaging.expected/mac_refs_heads_master_upload_prod.json
index 268d681..66a90e1 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_master_upload_prod.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_master_upload_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_stable_experimental_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_stable_experimental_flutter.json
index 859599e..9cf6e9c 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_stable_experimental_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_stable_experimental_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_stable_experimental_upload_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_stable_experimental_upload_flutter.json
index 859599e..9cf6e9c 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_stable_experimental_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_stable_experimental_upload_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_stable_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_stable_flutter.json
index 853b9d3..b8df6cc 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_stable_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_stable_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1213,7 +1213,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/macos/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1266,7 +1266,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/macos/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/macos/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_stable_prod.json b/recipes/packaging/packaging.expected/mac_refs_heads_stable_prod.json
index 568f2c2..5ce305a 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_stable_prod.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_stable_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_stable_upload_flutter.json b/recipes/packaging/packaging.expected/mac_refs_heads_stable_upload_flutter.json
index 853b9d3..b8df6cc 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_stable_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_stable_upload_flutter.json
@@ -1052,7 +1052,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1107,7 +1107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1213,7 +1213,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/macos/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1266,7 +1266,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/macos/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/macos/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/mac_refs_heads_stable_upload_prod.json b/recipes/packaging/packaging.expected/mac_refs_heads_stable_upload_prod.json
index 568f2c2..5ce305a 100644
--- a/recipes/packaging/packaging.expected/mac_refs_heads_stable_upload_prod.json
+++ b/recipes/packaging/packaging.expected/mac_refs_heads_stable_upload_prod.json
@@ -819,7 +819,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -872,7 +872,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_beta_experimental_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_beta_experimental_flutter.json
index 549abca..eac8103 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_beta_experimental_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_beta_experimental_flutter.json
@@ -1123,7 +1123,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1179,7 +1179,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_beta_experimental_upload_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_beta_experimental_upload_flutter.json
index 549abca..eac8103 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_beta_experimental_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_beta_experimental_upload_flutter.json
@@ -1123,7 +1123,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1179,7 +1179,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_beta_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_beta_flutter.json
index 8f1678e..9657e38 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_beta_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_beta_flutter.json
@@ -1123,7 +1123,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1179,7 +1179,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1287,7 +1287,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/windows/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1341,7 +1341,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/windows/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/windows/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_beta_prod.json b/recipes/packaging/packaging.expected/win_refs_heads_beta_prod.json
index 9ca1db4..4737258 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_beta_prod.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_beta_prod.json
@@ -888,7 +888,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -942,7 +942,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_beta_upload_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_beta_upload_flutter.json
index 8f1678e..9657e38 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_beta_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_beta_upload_flutter.json
@@ -1123,7 +1123,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1179,7 +1179,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1287,7 +1287,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/windows/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1341,7 +1341,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/windows/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/windows/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_beta_upload_prod.json b/recipes/packaging/packaging.expected/win_refs_heads_beta_upload_prod.json
index 9ca1db4..4737258 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_beta_upload_prod.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_beta_upload_prod.json
@@ -888,7 +888,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -942,7 +942,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_flutter.json
index 3bca49d..0c323bd 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_flutter.json
@@ -1067,7 +1067,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1121,7 +1121,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_prod.json b/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_prod.json
index 508a164..9f48e4e 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_prod.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_prod.json
@@ -888,7 +888,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -942,7 +942,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_upload_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_upload_flutter.json
index 3bca49d..0c323bd 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_upload_flutter.json
@@ -1067,7 +1067,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1121,7 +1121,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_upload_prod.json b/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_upload_prod.json
index 508a164..9f48e4e 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_upload_prod.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_flutter-release-test_upload_prod.json
@@ -888,7 +888,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -942,7 +942,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_master_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_master_flutter.json
index 054d3bd..b1e0d1a 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_master_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_master_flutter.json
@@ -1067,7 +1067,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1121,7 +1121,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_master_prod.json b/recipes/packaging/packaging.expected/win_refs_heads_master_prod.json
index 5dee6bb..7c53be1 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_master_prod.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_master_prod.json
@@ -888,7 +888,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -942,7 +942,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_master_upload_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_master_upload_flutter.json
index 054d3bd..b1e0d1a 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_master_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_master_upload_flutter.json
@@ -1067,7 +1067,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1121,7 +1121,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_master_upload_prod.json b/recipes/packaging/packaging.expected/win_refs_heads_master_upload_prod.json
index 5dee6bb..7c53be1 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_master_upload_prod.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_master_upload_prod.json
@@ -888,7 +888,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -942,7 +942,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_stable_experimental_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_stable_experimental_flutter.json
index 8e76144..7e4e6c7 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_stable_experimental_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_stable_experimental_flutter.json
@@ -1123,7 +1123,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1179,7 +1179,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_stable_experimental_upload_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_stable_experimental_upload_flutter.json
index 8e76144..7e4e6c7 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_stable_experimental_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_stable_experimental_upload_flutter.json
@@ -1123,7 +1123,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1179,7 +1179,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_stable_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_stable_flutter.json
index bcc5221..558cb35 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_stable_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_stable_flutter.json
@@ -1123,7 +1123,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1179,7 +1179,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1287,7 +1287,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/windows/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1341,7 +1341,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/windows/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/windows/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_stable_prod.json b/recipes/packaging/packaging.expected/win_refs_heads_stable_prod.json
index f0d14b1..5d1eb11 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_stable_prod.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_stable_prod.json
@@ -888,7 +888,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -942,7 +942,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_stable_upload_flutter.json b/recipes/packaging/packaging.expected/win_refs_heads_stable_upload_flutter.json
index bcc5221..558cb35 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_stable_upload_flutter.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_stable_upload_flutter.json
@@ -1123,7 +1123,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1179,7 +1179,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1287,7 +1287,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/windows/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1341,7 +1341,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/windows/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/windows/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging/packaging.expected/win_refs_heads_stable_upload_prod.json b/recipes/packaging/packaging.expected/win_refs_heads_stable_upload_prod.json
index f0d14b1..5d1eb11 100644
--- a/recipes/packaging/packaging.expected/win_refs_heads_stable_upload_prod.json
+++ b/recipes/packaging/packaging.expected/win_refs_heads_stable_upload_prod.json
@@ -888,7 +888,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -942,7 +942,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_experimental_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_experimental_flutter.json
index fa10a86..771fe84 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_experimental_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_experimental_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_experimental_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_experimental_upload_flutter.json
index fa10a86..771fe84 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_experimental_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_experimental_upload_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_flutter.json
index 56b4533..c82f2bf 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1212,7 +1212,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/linux/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1265,7 +1265,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/linux/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/beta/linux/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_prod.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_prod.json
index 50c5639..e3d9ceb 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/beta/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_upload_flutter.json
index 56b4533..c82f2bf 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_upload_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1212,7 +1212,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/linux/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1265,7 +1265,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/linux/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/beta/linux/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_upload_prod.json
index 50c5639..e3d9ceb 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_beta_upload_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/beta/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_flutter.json
index 1e140ab..52c9c97 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_flutter.json
@@ -996,7 +996,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1049,7 +1049,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_prod.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_prod.json
index a9fbb92..b19a9fe 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_upload_flutter.json
index 1e140ab..52c9c97 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_upload_flutter.json
@@ -996,7 +996,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1049,7 +1049,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_upload_prod.json
index a9fbb92..b19a9fe 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_flutter-release-test_upload_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/flutter-release-test/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_flutter.json
index d399eba..2421c28 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_flutter.json
@@ -996,7 +996,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1049,7 +1049,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_prod.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_prod.json
index 8ffa75a..59c2e64 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_upload_flutter.json
index d399eba..2421c28 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_upload_flutter.json
@@ -996,7 +996,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1049,7 +1049,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_upload_prod.json
index 8ffa75a..59c2e64 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_master_upload_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/master/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_experimental_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_experimental_flutter.json
index 3720fa6..888d84f 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_experimental_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_experimental_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_experimental_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_experimental_upload_flutter.json
index 3720fa6..888d84f 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_experimental_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_experimental_upload_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_flutter.json
index 6f7f99e..176c286 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1212,7 +1212,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/linux/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1265,7 +1265,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/linux/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/stable/linux/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_prod.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_prod.json
index 8a0b5aa..4cc7eda 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/stable/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_upload_flutter.json
index 6f7f99e..176c286 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_upload_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1212,7 +1212,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/linux/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -1265,7 +1265,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/linux/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/stable/linux/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_upload_prod.json
index 8a0b5aa..4cc7eda 100644
--- a/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/linux_refs_heads_stable_upload_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/linux/experimental/flutter-archive-package.tar.xz"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.tar.xz to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/linux/experimental/flutter-archive-package.tar.xz",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.tar.xz to gs://flutter_infra_release/releases/stable/linux/experimental/flutter-archive-package.tar.xz",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_experimental_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_experimental_flutter.json
index d7e8aa2..3a5045f 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_experimental_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_experimental_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_experimental_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_experimental_upload_flutter.json
index d7e8aa2..3a5045f 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_experimental_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_experimental_upload_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_flutter.json
index 33262d1..fd78c7a 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1212,7 +1212,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/macos/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1265,7 +1265,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/macos/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/macos/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_prod.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_prod.json
index 759ecaa..4043e8a 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_upload_flutter.json
index 33262d1..fd78c7a 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_upload_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1212,7 +1212,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/macos/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1265,7 +1265,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/macos/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/macos/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_upload_prod.json
index 759ecaa..4043e8a 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_beta_upload_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_flutter.json
index f563fae..a7c9738 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_flutter.json
@@ -996,7 +996,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1049,7 +1049,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_prod.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_prod.json
index 3a7c398..7cd1e30 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_upload_flutter.json
index f563fae..a7c9738 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_upload_flutter.json
@@ -996,7 +996,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1049,7 +1049,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_upload_prod.json
index 3a7c398..7cd1e30 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_flutter-release-test_upload_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_flutter.json
index 8116b14..4bd1fb7 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_flutter.json
@@ -996,7 +996,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1049,7 +1049,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_prod.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_prod.json
index 7652edb..726a5a9 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_upload_flutter.json
index 8116b14..4bd1fb7 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_upload_flutter.json
@@ -996,7 +996,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1049,7 +1049,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_upload_prod.json
index 7652edb..726a5a9 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_master_upload_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/master/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_experimental_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_experimental_flutter.json
index e9e4626..77c8474 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_experimental_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_experimental_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_experimental_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_experimental_upload_flutter.json
index e9e4626..77c8474 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_experimental_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_experimental_upload_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_flutter.json
index c76314f..35bc8ed 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1212,7 +1212,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/macos/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1265,7 +1265,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/macos/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/macos/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_prod.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_prod.json
index d1e061b..7fe9af6 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_upload_flutter.json
index c76314f..35bc8ed 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_upload_flutter.json
@@ -1051,7 +1051,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]/archive/releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1106,7 +1106,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]/archive/releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1212,7 +1212,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/macos/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1265,7 +1265,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/macos/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/macos/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_upload_prod.json
index d1e061b..7fe9af6 100644
--- a/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/mac_refs_heads_stable_upload_prod.json
@@ -818,7 +818,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/macos/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]/archive/flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -871,7 +871,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/macos/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]/archive/flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/macos/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_experimental_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_experimental_flutter.json
index 9908926..53a0834 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_experimental_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_experimental_flutter.json
@@ -1122,7 +1122,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1178,7 +1178,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_experimental_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_experimental_upload_flutter.json
index 9908926..53a0834 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_experimental_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_experimental_upload_flutter.json
@@ -1122,7 +1122,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1178,7 +1178,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_flutter.json
index 9b8cb85..3095700 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_flutter.json
@@ -1122,7 +1122,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1178,7 +1178,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1286,7 +1286,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/windows/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1340,7 +1340,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/windows/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/windows/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_prod.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_prod.json
index b6cdaf8..7c264ba 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_prod.json
@@ -887,7 +887,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -941,7 +941,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_upload_flutter.json
index 9b8cb85..3095700 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_upload_flutter.json
@@ -1122,7 +1122,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1178,7 +1178,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1286,7 +1286,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/windows/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1340,7 +1340,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/windows/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/windows/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_upload_prod.json
index b6cdaf8..7c264ba 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_beta_upload_prod.json
@@ -887,7 +887,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/beta/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -941,7 +941,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/beta/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/beta/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_flutter.json
index a826b34..da1490d 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_flutter.json
@@ -1066,7 +1066,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1120,7 +1120,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_prod.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_prod.json
index c046f68..76b95af 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_prod.json
@@ -887,7 +887,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -941,7 +941,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_upload_flutter.json
index a826b34..da1490d 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_upload_flutter.json
@@ -1066,7 +1066,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1120,7 +1120,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_upload_prod.json
index c046f68..76b95af 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_flutter-release-test_upload_prod.json
@@ -887,7 +887,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -941,7 +941,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/flutter-release-test/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_flutter.json
index 769d3ed..2e246f6 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_flutter.json
@@ -1066,7 +1066,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1120,7 +1120,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_prod.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_prod.json
index b576b1e..deac3e4 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_prod.json
@@ -887,7 +887,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -941,7 +941,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_upload_flutter.json
index 769d3ed..2e246f6 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_upload_flutter.json
@@ -1066,7 +1066,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1120,7 +1120,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_upload_prod.json
index b576b1e..deac3e4 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_master_upload_prod.json
@@ -887,7 +887,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -941,7 +941,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/master/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/master/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_experimental_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_experimental_flutter.json
index 1ae0dc8..36efb8d 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_experimental_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_experimental_flutter.json
@@ -1122,7 +1122,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1178,7 +1178,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_experimental_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_experimental_upload_flutter.json
index 1ae0dc8..36efb8d 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_experimental_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_experimental_upload_flutter.json
@@ -1122,7 +1122,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1178,7 +1178,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_flutter.json
index c728df5..802598f 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_flutter.json
@@ -1122,7 +1122,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1178,7 +1178,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1286,7 +1286,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/windows/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1340,7 +1340,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/windows/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/windows/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_prod.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_prod.json
index 9e9020d..3d80236 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_prod.json
@@ -887,7 +887,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -941,7 +941,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_upload_flutter.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_upload_flutter.json
index c728df5..802598f 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_upload_flutter.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_upload_flutter.json
@@ -1122,7 +1122,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/releases_linux.json"
+    "name": "Copy [START_DIR]\\archive\\releases_linux.json to tmp location"
   },
   {
     "cmd": [
@@ -1178,7 +1178,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/releases_linux.json",
+    "name": "gsutil Upload [START_DIR]\\archive\\releases_linux.json to gs://flutter_infra_release/releases/releases_linux.json",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
@@ -1286,7 +1286,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/windows/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -1340,7 +1340,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/windows/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/windows/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_upload_prod.json b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_upload_prod.json
index 9e9020d..3d80236 100644
--- a/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_upload_prod.json
+++ b/recipes/packaging_v2/packaging_v2.expected/win_refs_heads_stable_upload_prod.json
@@ -887,7 +887,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Copy gs://flutter_infra_release/releases/stable/windows/experimental/flutter-archive-package.zip"
+    "name": "Copy [START_DIR]\\archive\\flutter-archive-package.zip to tmp location"
   },
   {
     "cmd": [
@@ -941,7 +941,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil releases/stable/windows/experimental/flutter-archive-package.zip",
+    "name": "gsutil Upload [START_DIR]\\archive\\flutter-archive-package.zip to gs://flutter_infra_release/releases/stable/windows/experimental/flutter-archive-package.zip",
     "~followup_annotations": [
       "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_infra_release/@@@"
     ]
diff --git a/recipes/release/release.proto b/recipes/release/release.proto
new file mode 100644
index 0000000..9d20ea9
--- /dev/null
+++ b/recipes/release/release.proto
@@ -0,0 +1,80 @@
+// Copyright 2019 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto3";
+package recipes.flutter.release.release;
+
+message GClientVariables {
+  bool download_fuchsia_sdk = 1;
+  string fuchsia_sdk_path = 2;
+}
+
+message InputProperties {
+  string mastername = 1;
+  string goma_jobs = 2;
+
+  // License keys for the Android SDK.
+  string android_sdk_license = 3;
+  string android_sdk_preview_license = 4;
+
+  // Which artifacts to build.
+  // TODO(dnfield): Deprecate these in favor of actually passing in
+  // build artifacts to use.
+  bool build_host = 5;
+  bool build_fuchsia = 6;
+  bool build_android_aot = 7;
+  bool build_android_debug = 8;
+  bool build_android_vulkan = 9;
+
+  // Whether to actually upload results to the bucket.
+  bool upload_packages = 10;
+
+  // Used to override the git ref/url. Only for experimental or non-prod builds.
+  string git_url = 11;
+  string git_ref = 12;
+
+  string jazzy_version = 13;
+  string xcpretty_version = 14;
+
+  bool build_ios = 15;
+  bool ios_debug = 16;
+  bool ios_profile = 17;
+  bool ios_release = 18;
+  bool no_bitcode = 19;
+  bool no_maven = 20;
+  bool clobber=21;
+
+  string fuchsia_ctl_version = 22;
+  bool build_font_subset = 23;
+  bool test_fuchsia = 24;
+  // Override previous upload check, defaults to False
+  bool force_upload = 25;
+  bool build_android_jit_release = 26;
+  bool no_lto = 27;
+
+  // CIPD tag for fuchsia/vdl/...
+  string vdl_version = 28;
+
+  // Whether to build Windows UWP artifacts.
+  // UWP support removed: https://github.com/flutter/flutter/issues/102172
+  reserved 29; // deprecated build_windows_uwp field
+
+  // Upload engine benchmarks.
+  bool upload_metrics = 30;
+
+  // GClient variables.
+  GClientVariables gclient_variables = 31;
+
+  // emulator architecture to run tests on
+  // Currently only used by femu_test
+  string emulator_arch = 32;
+}
+
+message EnvProperties {
+  string SWARMING_TASK_ID = 1;
+
+  // Whether to skip android build. 'TRUE' skips the build.
+  // Intentionally not using a boolean as protobuf doesn't allow null defaults.
+  string SKIP_ANDROID = 2;
+}
diff --git a/recipes/release/release_builder.expected/basic_linux.json b/recipes/release/release_builder.expected/basic_linux_beta.json
similarity index 83%
copy from recipes/release/release_builder.expected/basic_linux.json
copy to recipes/release/release_builder.expected/basic_linux_beta.json
index 88d8b7f..9daaf77 100644
--- a/recipes/release/release_builder.expected/basic_linux.json
+++ b/recipes/release/release_builder.expected/basic_linux_beta.json
@@ -1,7 +1,7 @@
 [
   {
     "cmd": [],
-    "name": "Checkout flutter/engine"
+    "name": "Checkout flutter/mirrors/engine"
   },
   {
     "cmd": [
@@ -9,13 +9,13 @@
       "-u",
       "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
       "--path",
-      "[START_DIR]/engine",
+      "[START_DIR]/mirrors/engine",
       "--url",
       "https://flutter.googlesource.com/mirrors/engine"
     ],
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -25,7 +25,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.git setup",
+    "name": "Checkout flutter/mirrors/engine.git setup",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -39,14 +39,14 @@
       "--progress",
       "--tags"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "env": {
       "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
     },
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -56,7 +56,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.git fetch",
+    "name": "Checkout flutter/mirrors/engine.git fetch",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -68,11 +68,11 @@
       "-f",
       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -82,7 +82,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.git checkout",
+    "name": "Checkout flutter/mirrors/engine.git checkout",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -93,11 +93,11 @@
       "rev-parse",
       "HEAD"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -107,7 +107,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.read revision",
+    "name": "Checkout flutter/mirrors/engine.read revision",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
@@ -122,11 +122,11 @@
       "-d",
       "-x"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -136,7 +136,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.git clean",
+    "name": "Checkout flutter/mirrors/engine.git clean",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -147,11 +147,11 @@
       "submodule",
       "sync"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -161,7 +161,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.submodule sync",
+    "name": "Checkout flutter/mirrors/engine.submodule sync",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -174,11 +174,11 @@
       "--init",
       "--recursive"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -188,7 +188,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.submodule update",
+    "name": "Checkout flutter/mirrors/engine.submodule update",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -209,13 +209,13 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/engine/.ci.yaml",
+      "[START_DIR]/mirrors/engine/.ci.yaml",
       "/path/to/tmp/"
     ],
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -236,14 +236,14 @@
       "vpython3",
       "RECIPE_MODULE[flutter::yaml]/resources/parse_yaml.py",
       "--yaml_file",
-      "[START_DIR]/engine/.ci.yaml",
+      "[START_DIR]/mirrors/engine/.ci.yaml",
       "--json_file",
       "/path/to/tmp/json"
     ],
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -265,6 +265,18 @@
       "@@@STEP_LOG_LINE@json.output@        \"release_build\": true@@@",
       "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"recipe\": \"engine/something\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"enabled_branches\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"beta\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"main\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      ], @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"name\": \"linux packaging one\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"$flutter/osx_sdk\": \"{\\\"sdk_version\\\": \\\"14a5294e\\\"}\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"recipe\": \"release/something\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"scheduler\": \"release\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -285,7 +297,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -296,7 +308,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}, \"build\": {\"name\": \"linux one\", \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}}, \"recipe\": \"engine/something\"}, \"environment\": \"Staging\", \"gclient_variables\": {}, \"recipe\": \"engine/something\", \"repository\": \"engine\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"prod\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/beta\"}, \"priority\": 30, \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}, \"build\": {\"enabled_branches\": [\"beta\", \"main\"], \"name\": \"linux packaging one\", \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}}, \"recipe\": \"release/something\", \"scheduler\": \"release\"}, \"environment\": \"Staging\", \"gclient_variables\": {}, \"recipe\": \"release/something\", \"repository\": \"engine\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -321,7 +333,7 @@
       "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"bucket\": \"try\", @@@",
       "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"prod\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/main\"@@@",
@@ -343,25 +355,30 @@
       "@@@STEP_LOG_LINE@request@          \"host\": \"flutter.googlesource.com\", @@@",
       "@@@STEP_LOG_LINE@request@          \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
       "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/beta\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"$flutter/osx_sdk\": {@@@",
       "@@@STEP_LOG_LINE@request@            \"sdk_version\": \"14a5294e\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"build\": {@@@",
-      "@@@STEP_LOG_LINE@request@            \"name\": \"linux one\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"enabled_branches\": [@@@",
+      "@@@STEP_LOG_LINE@request@              \"beta\", @@@",
+      "@@@STEP_LOG_LINE@request@              \"main\"@@@",
+      "@@@STEP_LOG_LINE@request@            ], @@@",
+      "@@@STEP_LOG_LINE@request@            \"name\": \"linux packaging one\", @@@",
       "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"$flutter/osx_sdk\": {@@@",
       "@@@STEP_LOG_LINE@request@                \"sdk_version\": \"14a5294e\"@@@",
       "@@@STEP_LOG_LINE@request@              }@@@",
       "@@@STEP_LOG_LINE@request@            }, @@@",
-      "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine/something\"@@@",
+      "@@@STEP_LOG_LINE@request@            \"recipe\": \"release/something\", @@@",
+      "@@@STEP_LOG_LINE@request@            \"scheduler\": \"release\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"environment\": \"Staging\", @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
-      "@@@STEP_LOG_LINE@request@          \"recipe\": \"engine/something\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"recipe\": \"release/something\", @@@",
       "@@@STEP_LOG_LINE@request@          \"repository\": \"engine\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
@@ -414,7 +431,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -440,7 +457,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -522,7 +539,7 @@
   },
   {
     "cmd": [],
-    "name": "display builds.linux one",
+    "name": "display builds.linux packaging one",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@"
diff --git a/recipes/release/release_builder.expected/basic_linux.json b/recipes/release/release_builder.expected/basic_linux_main.json
similarity index 85%
rename from recipes/release/release_builder.expected/basic_linux.json
rename to recipes/release/release_builder.expected/basic_linux_main.json
index 88d8b7f..2b96b46 100644
--- a/recipes/release/release_builder.expected/basic_linux.json
+++ b/recipes/release/release_builder.expected/basic_linux_main.json
@@ -1,7 +1,7 @@
 [
   {
     "cmd": [],
-    "name": "Checkout flutter/engine"
+    "name": "Checkout flutter/mirrors/engine"
   },
   {
     "cmd": [
@@ -9,13 +9,13 @@
       "-u",
       "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
       "--path",
-      "[START_DIR]/engine",
+      "[START_DIR]/mirrors/engine",
       "--url",
       "https://flutter.googlesource.com/mirrors/engine"
     ],
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -25,7 +25,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.git setup",
+    "name": "Checkout flutter/mirrors/engine.git setup",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -35,18 +35,19 @@
       "git",
       "fetch",
       "origin",
+      "main",
       "--recurse-submodules",
       "--progress",
       "--tags"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "env": {
       "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
     },
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -56,7 +57,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.git fetch",
+    "name": "Checkout flutter/mirrors/engine.git fetch",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -66,13 +67,13 @@
       "git",
       "checkout",
       "-f",
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+      "FETCH_HEAD"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -82,7 +83,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.git checkout",
+    "name": "Checkout flutter/mirrors/engine.git checkout",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -93,11 +94,11 @@
       "rev-parse",
       "HEAD"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -107,7 +108,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.read revision",
+    "name": "Checkout flutter/mirrors/engine.read revision",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
@@ -122,11 +123,11 @@
       "-d",
       "-x"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -136,7 +137,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.git clean",
+    "name": "Checkout flutter/mirrors/engine.git clean",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -147,11 +148,11 @@
       "submodule",
       "sync"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -161,7 +162,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.submodule sync",
+    "name": "Checkout flutter/mirrors/engine.submodule sync",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -174,11 +175,11 @@
       "--init",
       "--recursive"
     ],
-    "cwd": "[START_DIR]/engine",
+    "cwd": "[START_DIR]/mirrors/engine",
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -188,7 +189,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Checkout flutter/engine.submodule update",
+    "name": "Checkout flutter/mirrors/engine.submodule update",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -209,13 +210,13 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/engine/.ci.yaml",
+      "[START_DIR]/mirrors/engine/.ci.yaml",
       "/path/to/tmp/"
     ],
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -236,14 +237,14 @@
       "vpython3",
       "RECIPE_MODULE[flutter::yaml]/resources/parse_yaml.py",
       "--yaml_file",
-      "[START_DIR]/engine/.ci.yaml",
+      "[START_DIR]/mirrors/engine/.ci.yaml",
       "--json_file",
       "/path/to/tmp/json"
     ],
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -265,6 +266,18 @@
       "@@@STEP_LOG_LINE@json.output@        \"release_build\": true@@@",
       "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"recipe\": \"engine/something\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"enabled_branches\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"beta\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"main\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      ], @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"name\": \"linux packaging one\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"$flutter/osx_sdk\": \"{\\\"sdk_version\\\": \\\"14a5294e\\\"}\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"recipe\": \"release/something\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"scheduler\": \"release\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -285,7 +298,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -296,7 +309,7 @@
       }
     },
     "name": "launch builds.schedule",
-    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}, \"build\": {\"name\": \"linux one\", \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}}, \"recipe\": \"engine/something\"}, \"environment\": \"Staging\", \"gclient_variables\": {}, \"recipe\": \"engine/something\", \"repository\": \"engine\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+    "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"prod\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 30, \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}, \"build\": {\"name\": \"linux one\", \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}, \"release_build\": true}, \"recipe\": \"engine/something\"}, \"environment\": \"Staging\", \"gclient_variables\": {}, \"recipe\": \"engine/something\", \"release_build\": true, \"repository\": \"engine\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -321,7 +334,7 @@
       "@@@STEP_LOG_LINE@request@        \"builder\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"bucket\": \"try\", @@@",
       "@@@STEP_LOG_LINE@request@          \"builder\": \"Linux Engine Drone\", @@@",
-      "@@@STEP_LOG_LINE@request@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@request@          \"project\": \"prod\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"exe\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"cipdVersion\": \"refs/heads/main\"@@@",
@@ -345,7 +358,7 @@
       "@@@STEP_LOG_LINE@request@          \"project\": \"mirrors/engine\", @@@",
       "@@@STEP_LOG_LINE@request@          \"ref\": \"refs/heads/main\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
-      "@@@STEP_LOG_LINE@request@        \"priority\": 25, @@@",
+      "@@@STEP_LOG_LINE@request@        \"priority\": 30, @@@",
       "@@@STEP_LOG_LINE@request@        \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"$flutter/osx_sdk\": {@@@",
       "@@@STEP_LOG_LINE@request@            \"sdk_version\": \"14a5294e\"@@@",
@@ -355,13 +368,15 @@
       "@@@STEP_LOG_LINE@request@            \"properties\": {@@@",
       "@@@STEP_LOG_LINE@request@              \"$flutter/osx_sdk\": {@@@",
       "@@@STEP_LOG_LINE@request@                \"sdk_version\": \"14a5294e\"@@@",
-      "@@@STEP_LOG_LINE@request@              }@@@",
+      "@@@STEP_LOG_LINE@request@              }, @@@",
+      "@@@STEP_LOG_LINE@request@              \"release_build\": true@@@",
       "@@@STEP_LOG_LINE@request@            }, @@@",
       "@@@STEP_LOG_LINE@request@            \"recipe\": \"engine/something\"@@@",
       "@@@STEP_LOG_LINE@request@          }, @@@",
       "@@@STEP_LOG_LINE@request@          \"environment\": \"Staging\", @@@",
       "@@@STEP_LOG_LINE@request@          \"gclient_variables\": {}, @@@",
       "@@@STEP_LOG_LINE@request@          \"recipe\": \"engine/something\", @@@",
+      "@@@STEP_LOG_LINE@request@          \"release_build\": true, @@@",
       "@@@STEP_LOG_LINE@request@          \"repository\": \"engine\"@@@",
       "@@@STEP_LOG_LINE@request@        }, @@@",
       "@@@STEP_LOG_LINE@request@        \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
@@ -414,7 +429,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
@@ -440,7 +455,7 @@
     "infra_step": true,
     "luci_context": {
       "realm": {
-        "name": "proj:try"
+        "name": "prod:try"
       },
       "resultdb": {
         "current_invocation": {
diff --git a/recipes/release/release_builder.py b/recipes/release/release_builder.py
index 2171d10..5954a63 100644
--- a/recipes/release/release_builder.py
+++ b/recipes/release/release_builder.py
@@ -1,21 +1,16 @@
 # Copyright 2022 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
-
 # Orchestrator recipe that runs subbuilds required to release engine.
 #
 # This recipe reads <engine_checkout>/.ci_yaml, and for every target
 # marked with release_build: true, and spawens a subbuild.
-
-
 import json
 from contextlib import contextmanager
-
-from PB.recipes.flutter.engine.engine import InputProperties
-from PB.recipes.flutter.engine.engine import EnvProperties
-
+from PB.recipes.flutter.release.release import InputProperties
+from PB.recipes.flutter.release.release import EnvProperties
+from RECIPE_MODULES.flutter.repo_util.api import REPOS
 from google.protobuf import struct_pb2
-
 DEPS = [
   'flutter/yaml',
   'flutter/display_util',
@@ -28,47 +23,55 @@
   'recipe_engine/properties',
   'recipe_engine/step',
 ]
-
-GIT_REPO = \
-  'https://flutter.googlesource.com/mirrors/engine'
-
-
 PROPERTIES = InputProperties
 ENV_PROPERTIES = EnvProperties
-
-
+RELEASE_CHANNELS = ('refs/heads/beta', 'refs/heads/stable')
+def ShouldRun(api, git_ref, target):
+  """Validates if a target should run based on platform, channel and repo."""
+  release_build = target.get('properties', {}).get('release_build', False)
+  for_this_platform = target['name'].lower().startswith(api.platform.name)
+  # Postsubmit for engine and flutter repositories.
+  if (release_build and for_this_platform and
+      (git_ref not in RELEASE_CHANNELS)):
+    return True
+  # Packaging for the flutter repository.
+  if (target.get('scheduler') == 'release' and for_this_platform
+      and (git_ref in RELEASE_CHANNELS)
+      and git_ref.replace('refs/heads/', '') in target.get('enabled_branches', [])
+     ):
+    return True
+  return False
 def RunSteps(api, properties, env_properties):
-  repository=api.properties.get('repository')
-  checkout_path = api.path['start_dir'].join(repository)
+  repository = api.properties.get('git_repo') or api.buildbucket.gitiles_commit.project
+  repository_parts = repository.split('/')
+  checkout_path = api.path['start_dir'].join(*repository_parts)
+  git_ref = api.properties.get('git_ref') or api.buildbucket.gitiles_commit.ref
+  git_url = api.properties.get('git_url') or REPOS[repository]
   api.repo_util.checkout(
     repository,
-    checkout_path=checkout_path
+    checkout_path=checkout_path,
+    url=git_url,
+    ref=git_ref
   )
-
   ci_yaml_path = checkout_path.join('.ci.yaml')
   ci_yaml = api.yaml.read('read ci yaml', ci_yaml_path, api.json.output())
-
   # Foreach target defined in .ci.yaml, if it contains
   # release_build: True, then spawn a subbuild.
   tasks = {}
   build_results = []
   with api.step.nest('launch builds') as presentation:
     for target in ci_yaml.json.output['targets']:
-      if target.get("properties", {}).get("release_build", False) and (
-          target["name"].lower().startswith(api.platform.name)):
+      if ShouldRun(api, git_ref, target):
         target = api.shard_util_v2.pre_process_properties(target)
         tasks.update(api.shard_util_v2.schedule(
-          [target, ], target["recipe"], presentation))
+          [target, ], presentation))
   with api.step.nest('collect builds') as presentation:
     build_results = api.shard_util_v2.collect(tasks, presentation)
-
   api.display_util.display_subbuilds(
     step_name='display builds',
     subbuilds=build_results,
     raise_on_failure=True,
   )
-
-
 def GenTests(api):
   try_subbuild1 = api.shard_util_v2.try_build_message(
     build_id=8945511751514863186,
@@ -77,26 +80,42 @@
     status="SUCCESS",
   )
   tasks_dict = {'targets': [
-    {'name': 'linux one', 'recipe': 'engine/something',
-     'properties': {'release_build': True, '$flutter/osx_sdk': '{"sdk_version": "14a5294e"}'}
-    }]
+      {
+          'name': 'linux one',
+          'recipe': 'engine/something',
+          'properties': {
+              'release_build': True,
+              '$flutter/osx_sdk': '{"sdk_version": "14a5294e"}'
+          },
+      },
+      {
+          'name': 'linux packaging one',
+          'recipe': 'release/something',
+          'scheduler': 'release',
+          'properties': {
+              '$flutter/osx_sdk': '{"sdk_version": "14a5294e"}'
+          },
+          'enabled_branches': ['beta', 'main']
+      }
+    ]
   }
-  yield api.test(
-    'basic_linux',
-    api.platform.name('linux'),
-    api.properties(environment='Staging'),
-    api.properties(repository='engine'),
-    api.buildbucket.try_build(
-      project='proj',
-      builder='try-builder',
-      git_repo='https://flutter.googlesource.com/mirrors/engine',
-      revision='a' * 40,
-      build_number=123,
-    ),
-    api.shard_util_v2.child_build_steps(
-      subbuilds=[try_subbuild1],
-      launch_step="launch builds",
-      collect_step="collect builds",
-    ),
-    api.step_data('read ci yaml.parse', api.json.output(tasks_dict))
+  for git_ref in ['main', 'beta']:
+    yield api.test(
+      'basic_linux_%s' % git_ref,
+      api.platform.name('linux'),
+      api.properties(environment='Staging', repository='engine'),
+      api.buildbucket.try_build(
+        project='prod',
+        builder='try-builder',
+        git_repo='https://flutter.googlesource.com/mirrors/engine',
+        revision='a' * 40,
+        build_number=123,
+        git_ref='refs/heads/%s' % git_ref,
+      ),
+      api.shard_util_v2.child_build_steps(
+        subbuilds=[try_subbuild1],
+        launch_step="launch builds",
+        collect_step="collect builds",
+      ),
+      api.step_data('read ci yaml.parse', api.json.output(tasks_dict))
   )