[recipes] Add support for signing

The build module can now sign release builds if a private signing
key is specified.

Change-Id: I4792694a25a0a3ba59c8fc154bcfdd88aa6ed0df
diff --git a/recipe_modules/build/api.py b/recipe_modules/build/api.py
index 84af768..69fef46 100644
--- a/recipe_modules/build/api.py
+++ b/recipe_modules/build/api.py
@@ -61,6 +61,16 @@
 CHECKOUT_AUTHORIZED_KEY = '.ssh/authorized_keys'
 CHECKOUT_PRIVATE_KEY = '.ssh/pkey'
 
+# The name of the environment variable that contains the path to a public key
+# used to sign release builds. Only set on release builders.
+RELEASE_PUBKEY_PATH = 'RELEASE_PUBKEY_PATH'
+
+# The default path to the public key.
+DEFAULT_PUBKEY_PATH = '/etc/release_keys/release_key_pub.pem'
+
+# The name of the public key file uploaded in release builds.
+RELEASE_PUBKEY_FILENAME = 'publickey.pem'
+
 
 class FuchsiaBuildResults(object):
   """Represents a completed build of Fuchsia."""
@@ -264,17 +274,20 @@
           namespace=namespace,
       )
 
-  def upload_results(self, gcs_bucket, namespace=None):
+  def upload_results(self, gcs_bucket, is_release_version=False,
+                     namespace=None):
     """Uploads artifacts from the build to Google Cloud Storage.
 
     Args:
       gcs_bucket (str): GCS bucket name to upload build results to.
-      namespace (str or None): A unique namespace for the GCS upload location;
+      is_release_version (bool): True if checkout is a release version.
+      namespace (str|None): A unique namespace for the GCS upload location;
         if None, the current build's ID is used.
     """
     assert gcs_bucket
     with self._api.step.nest('upload build results'):
-      self._api.build._upload_build_results(self, gcs_bucket, namespace)
+      self._api.build._upload_build_results(self, gcs_bucket,
+                                            is_release_version, namespace)
     self._api.build._upload_package_snapshot(self, gcs_bucket, namespace)
 
 
@@ -1123,21 +1136,62 @@
         results.storage_full.extend(2)
       return results
 
-  def _upload_build_results(self, build_results, gcs_bucket, build_id):
+  def _upload_build_results(self, build_results, gcs_bucket, is_release_version,
+                            build_id):
     assert gcs_bucket
     # Upload archives.
-    for path in build_results.archives.itervalues():
+    for name, path in build_results.archives.iteritems():
+      metadata = None
+
+      # Try and sign the build archive. If the we are on a release build and the
+      # signing script returns a signature, add it to the metadata and
+      # upload the public key for verification.
+      if is_release_version and name == 'archive':
+        signature = self._try_sign_archive(path)
+        if signature:
+          # Add the signature to the metadata.
+          metadata = {
+              'x-goog-meta-signature': signature,
+          }
+
+          # Upload the public key to GCS.
+          # Note that we should never actually use the DEFAULT_PUBKEY_PATH here,
+          # because a signature should only be generated in the presence of the
+          # RELEASE_PUBKEY_PATH environment variable.
+          self.m.upload.file_to_gcs(
+              source=os.getenv(RELEASE_PUBKEY_PATH, DEFAULT_PUBKEY_PATH),
+              bucket=gcs_bucket,
+              subpath=RELEASE_PUBKEY_FILENAME,
+              namespace=build_id,
+          )
+
+      # Upload the archive
       self.m.upload.file_to_gcs(
           source=path,
           bucket=gcs_bucket,
           subpath=self.m.path.basename(path),
           namespace=build_id,
+          metadata=metadata,
       )
+
     # Upload build metrics.
     self._upload_tracing_data(build_results, gcs_bucket, build_id)
     self._upload_fileystem_sizes(build_results)
     self._upload_blobstats_output(build_results, gcs_bucket, build_id)
 
+  def _try_sign_archive(self, archive_path):
+    args = [
+        '--archive-file',
+        archive_path,
+    ]
+    return self.m.python(
+        'run signing script',
+        self.resource('sign.py'),
+        args,
+        venv=self.resource('sign.py.vpython'),
+        stdout=self.m.raw_io.output(),
+    ).stdout
+
   def _upload_package_snapshot(self, build_results, gcs_bucket, build_id):
     assert gcs_bucket
     snapshot_path = build_results.fuchsia_build_dir.join(
diff --git a/recipe_modules/build/examples/full.expected/release_with_signature.json b/recipe_modules/build/examples/full.expected/release_with_signature.json
new file mode 100644
index 0000000..aa61b1d
--- /dev/null
+++ b/recipe_modules/build/examples/full.expected/release_with_signature.json
@@ -0,0 +1,3436 @@
+[
+  {
+    "cmd": [],
+    "name": "build"
+  },
+  {
+    "cmd": [],
+    "name": "build.build fuchsia",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "build.build fuchsia.ensure goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[CACHE]/goma/client",
+      "-ensure-file",
+      "infra_internal/goma/client/${platform} release",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "build.build fuchsia.ensure goma.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-release---------\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/prebuilt/third_party/gn/linux-x64/gn",
+      "gen",
+      "[START_DIR]/out/default",
+      "--check",
+      "--args=import(\"//topaz/boards/x64.gni\")  import(\"//topaz/products/default.gni\")  build_info_board=\"x64\" build_info_product=\"default\" build_info_version=\"0.19700101.0.77\" goma_dir=\"[CACHE]/goma/client\" is_debug=false sdk_id=\"sdk-id\" target_cpu=\"x64\" use_goma=true zircon_tracelog=\"[CLEANUP]/zircon_gn_trace.json\"",
+      "--tracelog=[CLEANUP]/gn_trace.json"
+    ],
+    "name": "build.build fuchsia.gn gen",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/out/default/zircon.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "build.build fuchsia.read zircon ninja instructions",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"dir\": \"../default.zircon\", @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"targets\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"legacy-host_tests\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"manifest-$cpu\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/out/default/images.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "build.build fuchsia.read image manifest",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"bootserver_pave\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"--boot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"--zircona\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    ], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zircon-a\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"fuchsia.zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"storage-full\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"fvm.blk\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"blk\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"bootserver_pave\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"--fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    ], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"storage-sparse\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"fvm.sparse.blk\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"blk\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"bootserver_pave\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"--efi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    ], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"efi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"fuchsia.esp.blk\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"blk\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"bootserver_netboot\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"--boot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    ], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"netboot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"netboot.zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"archive\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"build-archive.tgz\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"tgz\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"archive\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"build-archive.zip\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"zip\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"qemu-kernel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"multiboot.bin\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"kernel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbol-archive\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"symbol-archive.tgz\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"tgz\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"bootserver_pave\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"--zircon-r\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    ], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zircon-r\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"zircon-r.zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"type\": \"zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/out/default/tool_paths.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "build.build fuchsia.read tool_paths manifest",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/bazel/linux_x64/bazel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/cargo/linux_x64/cargo\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-doc/linux_x64/clang-doc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format-diff/linux_x64/clang-format-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format/linux_x64/clang-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy-diff/linux_x64/clang-tidy-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy/linux_x64/clang-tidy\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dart/linux_x64/dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dartfmt/linux_x64/dartfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gn/linux_x64/gn\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/go/linux_x64/go\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gofmt/linux_x64/gofmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-cov/linux_x64/llvm-cov\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-profdata/linux_x64/llvm-profdata\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-symbolizer/linux_x64/llvm-symbolizer\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/ninja/linux_x64/ninja\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustc/linux_x64/rustc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustdoc/linux_x64/rustdoc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustfmt/linux_x64/rustfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/yapf/linux_x64/yapf\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/bootserver\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/fidl-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/fidl-lint\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/minfs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/artifactory\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/bootserver_new\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/botanist\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/covargs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/debroot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/ninjatrace\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/seriallistener\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/size_checker\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/symbolize\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/testrunner\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/testsharder\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/upload_debug_symbols\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/bazel/linux_arm64/bazel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/cargo/linux_arm64/cargo\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-doc/linux_arm64/clang-doc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format-diff/linux_arm64/clang-format-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format/linux_arm64/clang-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy-diff/linux_arm64/clang-tidy-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy/linux_arm64/clang-tidy\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dart/linux_arm64/dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dartfmt/linux_arm64/dartfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gn/linux_arm64/gn\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/go/linux_arm64/go\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gofmt/linux_arm64/gofmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-cov/linux_arm64/llvm-cov\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-profdata/linux_arm64/llvm-profdata\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-symbolizer/linux_arm64/llvm-symbolizer\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/ninja/linux_arm64/ninja\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustc/linux_arm64/rustc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustdoc/linux_arm64/rustdoc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustfmt/linux_arm64/rustfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/yapf/linux_arm64/yapf\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/bootserver\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/fidl-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/fidl-lint\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/minfs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/artifactory\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/bootserver_new\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/botanist\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/covargs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/debroot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/ninjatrace\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/seriallistener\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/size_checker\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/symbolize\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/testrunner\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/testsharder\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/upload_debug_symbols\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/bazel/mac_x64/bazel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/cargo/mac_x64/cargo\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-doc/mac_x64/clang-doc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format-diff/mac_x64/clang-format-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format/mac_x64/clang-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy-diff/mac_x64/clang-tidy-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy/mac_x64/clang-tidy\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dart/mac_x64/dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dartfmt/mac_x64/dartfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gn/mac_x64/gn\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/go/mac_x64/go\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gofmt/mac_x64/gofmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-cov/mac_x64/llvm-cov\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-profdata/mac_x64/llvm-profdata\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-symbolizer/mac_x64/llvm-symbolizer\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/ninja/mac_x64/ninja\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustc/mac_x64/rustc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustdoc/mac_x64/rustdoc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustfmt/mac_x64/rustfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/yapf/mac_x64/yapf\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/bootserver\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/fidl-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/fidl-lint\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/minfs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/artifactory\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/bootserver_new\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/botanist\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/covargs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/debroot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/ninjatrace\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/seriallistener\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/size_checker\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/symbolize\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/testrunner\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/testsharder\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/upload_debug_symbols\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/bazel/mac_arm64/bazel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/cargo/mac_arm64/cargo\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-doc/mac_arm64/clang-doc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format-diff/mac_arm64/clang-format-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format/mac_arm64/clang-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy-diff/mac_arm64/clang-tidy-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy/mac_arm64/clang-tidy\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dart/mac_arm64/dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dartfmt/mac_arm64/dartfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gn/mac_arm64/gn\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/go/mac_arm64/go\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gofmt/mac_arm64/gofmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-cov/mac_arm64/llvm-cov\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-profdata/mac_arm64/llvm-profdata\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-symbolizer/mac_arm64/llvm-symbolizer\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/ninja/mac_arm64/ninja\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustc/mac_arm64/rustc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustdoc/mac_arm64/rustdoc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustfmt/mac_arm64/rustfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/yapf/mac_arm64/yapf\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/bootserver\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/fidl-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/fidl-lint\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/minfs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/artifactory\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/bootserver_new\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/botanist\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/covargs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/debroot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/ninjatrace\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/seriallistener\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/size_checker\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/symbolize\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/testrunner\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/testsharder\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/upload_debug_symbols\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/out/default/tests.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "build.build fuchsia.read test spec manifest",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"test\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"label\": \"//public/lib/foo:foo_tests(//some/toolchain)\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"name\": \"foo_tests\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"path\": \"path/on/disk/to/test\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"test\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"label\": \"//lib/bar:bar_unittests(//some/toolchain)\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"name\": \"bar_unittests\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"os\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"path\": \"path/on/fuchsia/to/test\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "build.build fuchsia.ninja",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "build.build fuchsia.ninja.pre_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "<LUCI_CONTEXT>",
+      "/path/to/tmp/json"
+    ],
+    "name": "build.build fuchsia.ninja.pre_goma.read context",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "{\"local_auth\": {\"accounts\": [{\"email\": \"some@example.com\", \"id\": \"test\"}], \"default_account_id\": \"system\"}}",
+      "[CLEANUP]/luci_context._tmp_1"
+    ],
+    "infra_step": true,
+    "name": "build.build fuchsia.ninja.pre_goma.write context",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@",
+      "@@@STEP_LOG_LINE@luci_context._tmp_1@{\"local_auth\": {\"accounts\": [{\"email\": \"some@example.com\", \"id\": \"test\"}], \"default_account_id\": \"system\"}}@@@",
+      "@@@STEP_LOG_END@luci_context._tmp_1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/goma/client/goma_ctl.py",
+      "restart"
+    ],
+    "env": {
+      "GOMA_CACHE_DIR": "[CACHE]/goma",
+      "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
+      "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
+      "GOMA_PING_TIMEOUT_SEC": "100",
+      "LUCI_CONTEXT": "[CLEANUP]/luci_context._tmp_1"
+    },
+    "infra_step": true,
+    "name": "build.build fuchsia.ninja.pre_goma.start_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "RECIPE_MODULE[fuchsia::ninja]/resources/ninja_wrapper.py",
+      "--ninja_info_output",
+      "/path/to/tmp/json",
+      "--failure_output",
+      "/path/to/tmp/",
+      "--",
+      "[START_DIR]/prebuilt/third_party/ninja/linux_x64/ninja",
+      "-C",
+      "[START_DIR]/out/default.zircon",
+      "-j",
+      "80",
+      "legacy-host_tests",
+      "manifest-$cpu"
+    ],
+    "name": "build.build fuchsia.ninja.zircon",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "RECIPE_MODULE[fuchsia::ninja]/resources/ninja_wrapper.py",
+      "--ninja_info_output",
+      "/path/to/tmp/json",
+      "--failure_output",
+      "/path/to/tmp/",
+      "--",
+      "[START_DIR]/prebuilt/third_party/ninja/linux_x64/ninja",
+      "-C",
+      "[START_DIR]/out/default",
+      "-j",
+      "80",
+      "build-archive.tgz",
+      "build/gn:package_archive",
+      "build/images:record_filesystem_sizes",
+      "build/images:system_snapshot",
+      "fuchsia.esp.blk",
+      "fuchsia.zbi",
+      "fvm.blk",
+      "fvm.sparse.blk",
+      "ids.txt",
+      "multiboot.bin",
+      "netboot.zbi",
+      "path/on/disk/to/test",
+      "zircon-r.zbi"
+    ],
+    "name": "build.build fuchsia.ninja.fuchsia",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "build.build fuchsia.ninja.post_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/goma/client/goma_ctl.py",
+      "jsonstatus",
+      "[CACHE]/goma/client/jsonstatus"
+    ],
+    "env": {
+      "GOMA_CACHE_DIR": "[CACHE]/goma",
+      "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
+      "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
+      "LUCI_CONTEXT": "[CLEANUP]/luci_context._tmp_1"
+    },
+    "name": "build.build fuchsia.ninja.post_goma.goma_jsonstatus",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"notice\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"infra_status\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"num_user_error\": 0, @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"ping_status_code\": 200@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/goma/client/goma_ctl.py",
+      "stat"
+    ],
+    "env": {
+      "GOMA_CACHE_DIR": "[CACHE]/goma",
+      "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
+      "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
+      "LUCI_CONTEXT": "[CLEANUP]/luci_context._tmp_1"
+    },
+    "name": "build.build fuchsia.ninja.post_goma.goma_stats",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/goma/client/goma_ctl.py",
+      "stop"
+    ],
+    "env": {
+      "GOMA_CACHE_DIR": "[CACHE]/goma",
+      "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
+      "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
+      "LUCI_CONTEXT": "[CLEANUP]/luci_context._tmp_1"
+    },
+    "name": "build.build fuchsia.ninja.post_goma.stop_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/goma/client/goma_stats.json",
+      "/path/to/tmp/"
+    ],
+    "infra_step": true,
+    "name": "build.build fuchsia.ninja.post_goma.read goma_stats.json",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@",
+      "@@@STEP_LOG_LINE@goma_stats.json@{}@@@",
+      "@@@STEP_LOG_END@goma_stats.json@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "{\"build_info\": {\"build_id\": 8945511751514863184, \"time_stamp\": \"2012-05-14 12:53:21.500000\", \"builder\": \"builder\", \"time_stamp_int\": 1337000003000}}",
+      "[CACHE]/goma/client/goma_stats.json"
+    ],
+    "infra_step": true,
+    "name": "build.build fuchsia.ninja.post_goma.write goma_stats.json",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@",
+      "@@@STEP_LOG_LINE@goma_stats.json@{\"build_info\": {\"build_id\": 8945511751514863184, \"time_stamp\": \"2012-05-14 12:53:21.500000\", \"builder\": \"builder\", \"time_stamp_int\": 1337000003000}}@@@",
+      "@@@STEP_LOG_END@goma_stats.json@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_info\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"build_id\": 8945511751514863184, @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"time_stamp\": \"2012-05-14 12:53:21.500000\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": \"builder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"time_stamp_int\": 1337000003000@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "build.build fuchsia.ninja.post_goma.ensure bqupload",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cipd/bqupload",
+      "-ensure-file",
+      "infra/tools/bqupload/${platform} git_revision:d85fe78f303c3e969f815121e17c8b08868039ef",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "build.build fuchsia.ninja.post_goma.ensure bqupload.ensure_installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@5@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-git_revision:d85\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/bqupload/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cipd/bqupload/bqupload",
+      "fuchsia-infra.artifacts.builds_beta_goma",
+      "[CACHE]/goma/client/goma_stats.json"
+    ],
+    "name": "build.build fuchsia.ninja.post_goma.upload goma_stats_to BQ: fuchsia-infra/artifacts/builds_beta_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@4@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "filesizes",
+      "[START_DIR]/out/default/fvm.blk"
+    ],
+    "infra_step": true,
+    "name": "build.build fuchsia.fvm.blk size",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@filesizes@[START_DIR]/out/default/fvm.blk: \t111@@@",
+      "@@@STEP_LOG_END@filesizes@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/out/default.zircon/host-linux-x64/fvm",
+      "[START_DIR]/out/default/fvm.blk",
+      "extend",
+      "--length",
+      "222"
+    ],
+    "name": "build.build fuchsia.fvm.blk extend",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/prebuilt/third_party/gn/linux-x64/gn",
+      "gen",
+      "[START_DIR]/another/out",
+      "--check",
+      "--args=import(\"//topaz/boards/x64.gni\")  import(\"//topaz/products/default.gni\")  goma_dir=\"[CACHE]/goma/client\" is_debug=false target_cpu=\"x64\" use_goma=true",
+      "--export-compile-commands"
+    ],
+    "name": "gn gen"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/another/out/zircon.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "read zircon ninja instructions",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"dir\": \"../default.zircon\", @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"targets\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"legacy-host_tests\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"manifest-$cpu\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "merge compdbs"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/another/default.zircon/compile_commands.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "merge compdbs.read zircon compdb",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"command\": \"clang++ zircon.cpp\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"directory\": \"[START_DIR]/out/default.zircon\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"file\": \"../../zircon.cpp\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@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": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/another/out/compile_commands.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "merge compdbs.read compdb",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"command\": \"clang++ foo.cpp\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"directory\": \"[START_DIR]/out/default\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"file\": \"../../foo.cpp\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"command\": \"clang++ third_party/foo.cpp\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"directory\": \"[START_DIR]/out/default\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"file\": \"../../third_party/foo.cpp\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"command\": \"clang++ foo.cpp\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"directory\": \"[START_DIR]/out/default\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"file\": \"../../out/default/foo.cpp\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@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": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[{\"directory\": \"[START_DIR]/out/default.zircon\", \"command\": \"clang++ zircon.cpp\", \"file\": \"../../zircon.cpp\"}, {\"directory\": \"[START_DIR]/out/default\", \"command\": \"clang++ foo.cpp\", \"file\": \"../../foo.cpp\"}]",
+      "[CLEANUP]/compile_commands.json"
+    ],
+    "infra_step": true,
+    "name": "write merged compdb",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@compile_commands.json@[{\"directory\": \"[START_DIR]/out/default.zircon\", \"command\": \"clang++ zircon.cpp\", \"file\": \"../../zircon.cpp\"}, {\"directory\": \"[START_DIR]/out/default\", \"command\": \"clang++ foo.cpp\", \"file\": \"../../foo.cpp\"}]@@@",
+      "@@@STEP_LOG_END@compile_commands.json@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/another/out/zbi_tests.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "read zbi test manifest",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@[]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/another/out/tool_paths.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "read tool_paths manifest",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/bazel/linux_x64/bazel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/cargo/linux_x64/cargo\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-doc/linux_x64/clang-doc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format-diff/linux_x64/clang-format-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format/linux_x64/clang-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy-diff/linux_x64/clang-tidy-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy/linux_x64/clang-tidy\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dart/linux_x64/dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dartfmt/linux_x64/dartfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gn/linux_x64/gn\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/go/linux_x64/go\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gofmt/linux_x64/gofmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-cov/linux_x64/llvm-cov\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-profdata/linux_x64/llvm-profdata\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-symbolizer/linux_x64/llvm-symbolizer\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/ninja/linux_x64/ninja\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustc/linux_x64/rustc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustdoc/linux_x64/rustdoc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustfmt/linux_x64/rustfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/yapf/linux_x64/yapf\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/bootserver\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/fidl-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/fidl-lint\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/minfs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-x64/zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/artifactory\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/bootserver_new\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/botanist\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/covargs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/debroot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/ninjatrace\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/seriallistener\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/size_checker\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/symbolize\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/testrunner\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/testsharder\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_x64/upload_debug_symbols\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/bazel/linux_arm64/bazel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/cargo/linux_arm64/cargo\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-doc/linux_arm64/clang-doc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format-diff/linux_arm64/clang-format-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format/linux_arm64/clang-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy-diff/linux_arm64/clang-tidy-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy/linux_arm64/clang-tidy\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dart/linux_arm64/dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dartfmt/linux_arm64/dartfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gn/linux_arm64/gn\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/go/linux_arm64/go\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gofmt/linux_arm64/gofmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-cov/linux_arm64/llvm-cov\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-profdata/linux_arm64/llvm-profdata\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-symbolizer/linux_arm64/llvm-symbolizer\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/ninja/linux_arm64/ninja\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustc/linux_arm64/rustc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustdoc/linux_arm64/rustdoc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustfmt/linux_arm64/rustfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/yapf/linux_arm64/yapf\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/bootserver\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/fidl-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/fidl-lint\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/minfs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-linux-arm64/zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/artifactory\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/bootserver_new\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/botanist\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/covargs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/debroot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/ninjatrace\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/seriallistener\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/size_checker\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/symbolize\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/testrunner\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/testsharder\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"linux_arm64/upload_debug_symbols\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/bazel/mac_x64/bazel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/cargo/mac_x64/cargo\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-doc/mac_x64/clang-doc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format-diff/mac_x64/clang-format-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format/mac_x64/clang-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy-diff/mac_x64/clang-tidy-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy/mac_x64/clang-tidy\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dart/mac_x64/dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dartfmt/mac_x64/dartfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gn/mac_x64/gn\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/go/mac_x64/go\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gofmt/mac_x64/gofmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-cov/mac_x64/llvm-cov\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-profdata/mac_x64/llvm-profdata\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-symbolizer/mac_x64/llvm-symbolizer\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/ninja/mac_x64/ninja\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustc/mac_x64/rustc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustdoc/mac_x64/rustdoc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustfmt/mac_x64/rustfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/yapf/mac_x64/yapf\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/bootserver\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/fidl-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/fidl-lint\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/minfs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-x64/zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/artifactory\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/bootserver_new\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/botanist\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/covargs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/debroot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/ninjatrace\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/seriallistener\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/size_checker\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/symbolize\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/testrunner\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/testsharder\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"x64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_x64/upload_debug_symbols\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bazel\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/bazel/mac_arm64/bazel\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"cargo\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/cargo/mac_arm64/cargo\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-doc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-doc/mac_arm64/clang-doc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format-diff/mac_arm64/clang-format-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-format/mac_arm64/clang-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy-diff\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy-diff/mac_arm64/clang-tidy-diff\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"clang-tidy\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/clang-tidy/mac_arm64/clang-tidy\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dart\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dart/mac_arm64/dart\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"dartfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/dartfmt/mac_arm64/dartfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gn\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gn/mac_arm64/gn\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"go\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/go/mac_arm64/go\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"gofmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/gofmt/mac_arm64/gofmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-cov\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-cov/mac_arm64/llvm-cov\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-profdata\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-profdata/mac_arm64/llvm-profdata\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"llvm-symbolizer\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/llvm-symbolizer/mac_arm64/llvm-symbolizer\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninja\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/ninja/mac_arm64/ninja\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustc/mac_arm64/rustc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustdoc\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustdoc/mac_arm64/rustdoc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"rustfmt\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/rustfmt/mac_arm64/rustfmt\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"yapf\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../../prebuilt/third_party/yapf/mac_arm64/yapf\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/bootserver\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-format\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/fidl-format\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fidl-lint\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/fidl-lint\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"fvm\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/fvm\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"minfs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/minfs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"zbi\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"../default.zircon/host-mac-arm64/zbi\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"artifactory\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/artifactory\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"bootserver_new\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/bootserver_new\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"botanist\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/botanist\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"covargs\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/covargs\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"debroot\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/debroot\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"ninjatrace\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/ninjatrace\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"seriallistener\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/seriallistener\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"size_checker\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/size_checker\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"symbolize\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/symbolize\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testrunner\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/testrunner\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"testsharder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/testsharder\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"cpu\": \"arm64\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"label\": \"//tools/upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"upload_debug_symbols\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"os\": \"mac\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"path\": \"mac_arm64/upload_debug_symbols\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/another/default.zircon/generated_sources.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "read zircon generated sources",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"//generated_header.h\"@@@",
+      "@@@STEP_LOG_LINE@json.output@]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[START_DIR]/another/out/all_fidl_json.txt",
+      "/path/to/tmp/"
+    ],
+    "infra_step": true,
+    "name": "read generated sources"
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+      "[START_DIR]/another/out/zbi_tests.json",
+      "/path/to/tmp/json"
+    ],
+    "name": "read zbi test manifest (2)",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@[]@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "ninja"
+  },
+  {
+    "cmd": [],
+    "name": "ninja.pre_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/goma/client/goma_ctl.py",
+      "restart"
+    ],
+    "env": {
+      "GOMA_CACHE_DIR": "[CACHE]/goma",
+      "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
+      "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
+      "GOMA_PING_TIMEOUT_SEC": "100",
+      "LUCI_CONTEXT": "[CLEANUP]/luci_context._tmp_1"
+    },
+    "infra_step": true,
+    "name": "ninja.pre_goma.start_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "RECIPE_MODULE[fuchsia::ninja]/resources/ninja_wrapper.py",
+      "--ninja_info_output",
+      "/path/to/tmp/json",
+      "--failure_output",
+      "/path/to/tmp/",
+      "--",
+      "[START_DIR]/prebuilt/third_party/ninja/linux_x64/ninja",
+      "-C",
+      "[START_DIR]/another/default.zircon",
+      "-j",
+      "80",
+      "//generated_header.h",
+      "legacy-host_tests",
+      "manifest-$cpu"
+    ],
+    "name": "ninja.zircon",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "RECIPE_MODULE[fuchsia::ninja]/resources/ninja_wrapper.py",
+      "--ninja_info_output",
+      "/path/to/tmp/json",
+      "--failure_output",
+      "/path/to/tmp/",
+      "--",
+      "[START_DIR]/prebuilt/third_party/ninja/linux_x64/ninja",
+      "-C",
+      "[START_DIR]/another/out",
+      "-j",
+      "80",
+      "//generated_fidl.json"
+    ],
+    "name": "ninja.fuchsia",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "ninja.post_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/goma/client/goma_ctl.py",
+      "jsonstatus",
+      "[CACHE]/goma/client/jsonstatus"
+    ],
+    "env": {
+      "GOMA_CACHE_DIR": "[CACHE]/goma",
+      "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
+      "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
+      "LUCI_CONTEXT": "[CLEANUP]/luci_context._tmp_1"
+    },
+    "name": "ninja.post_goma.goma_jsonstatus",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"notice\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"infra_status\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"num_user_error\": 0, @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"ping_status_code\": 200@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/goma/client/goma_ctl.py",
+      "stat"
+    ],
+    "env": {
+      "GOMA_CACHE_DIR": "[CACHE]/goma",
+      "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
+      "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
+      "LUCI_CONTEXT": "[CLEANUP]/luci_context._tmp_1"
+    },
+    "name": "ninja.post_goma.goma_stats",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[CACHE]/goma/client/goma_ctl.py",
+      "stop"
+    ],
+    "env": {
+      "GOMA_CACHE_DIR": "[CACHE]/goma",
+      "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
+      "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
+      "LUCI_CONTEXT": "[CLEANUP]/luci_context._tmp_1"
+    },
+    "name": "ninja.post_goma.stop_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CACHE]/goma/client/goma_stats.json",
+      "/path/to/tmp/"
+    ],
+    "infra_step": true,
+    "name": "ninja.post_goma.read goma_stats.json",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@goma_stats.json@{}@@@",
+      "@@@STEP_LOG_END@goma_stats.json@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "{\"build_info\": {\"build_id\": 8945511751514863184, \"time_stamp\": \"2012-05-14 12:53:24.500000\", \"builder\": \"builder\", \"time_stamp_int\": 1337000006000}}",
+      "[CACHE]/goma/client/goma_stats.json"
+    ],
+    "infra_step": true,
+    "name": "ninja.post_goma.write goma_stats.json",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@goma_stats.json@{\"build_info\": {\"build_id\": 8945511751514863184, \"time_stamp\": \"2012-05-14 12:53:24.500000\", \"builder\": \"builder\", \"time_stamp_int\": 1337000006000}}@@@",
+      "@@@STEP_LOG_END@goma_stats.json@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_info\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"build_id\": 8945511751514863184, @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"time_stamp\": \"2012-05-14 12:53:24.500000\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": \"builder\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"time_stamp_int\": 1337000006000@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cipd/bqupload/bqupload",
+      "fuchsia-infra.artifacts.builds_beta_goma",
+      "[CACHE]/goma/client/goma_stats.json"
+    ],
+    "name": "ninja.post_goma.upload goma_stats_to BQ: fuchsia-infra/artifacts/builds_beta_goma",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "check filesystem sizes"
+  },
+  {
+    "cmd": [
+      "[START_DIR]/out/default/linux_x64/upload_debug_symbols",
+      "-bucket",
+      "debug-symbols",
+      "-j",
+      "1000",
+      "-upload-record",
+      "[CLEANUP]/debug-binaries.txt",
+      "[START_DIR]"
+    ],
+    "infra_step": true,
+    "name": "upload debug symbols"
+  },
+  {
+    "cmd": [],
+    "name": "ensure gsutil"
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cipd/gsutil",
+      "-ensure-file",
+      "infra/gsutil version:4.41",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "ensure gsutil.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-version:4.41----\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/gsutil\"@@@",
+      "@@@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": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "cp",
+      "[CLEANUP]/debug-binaries.txt",
+      "gs://###fuchsia-build###/builds/8945511751514863184/debug-binaries.txt"
+    ],
+    "infra_step": true,
+    "name": "upload debug-binaries.txt to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_LINK@debug-binaries.txt@https://storage.cloud.google.com/###fuchsia-build###/builds/8945511751514863184/debug-binaries.txt@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "upload build results"
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "cp",
+      "[START_DIR]/out/default/packages.tar.gz",
+      "gs://###fuchsia-build###/builds/8945511751514863184/packages.tar.gz"
+    ],
+    "infra_step": true,
+    "name": "upload build results.upload packages.tar.gz to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@packages.tar.gz@https://storage.cloud.google.com/###fuchsia-build###/builds/8945511751514863184/packages.tar.gz@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::build]/resources/sign.py.vpython",
+      "-u",
+      "RECIPE_MODULE[fuchsia::build]/resources/sign.py",
+      "--archive-file",
+      "[START_DIR]/out/default/build-archive.tgz"
+    ],
+    "name": "upload build results.run signing script",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "cp",
+      "/etc/release_keys/release_key_pub.pem",
+      "gs://###fuchsia-build###/builds/8945511751514863184/publickey.pem"
+    ],
+    "infra_step": true,
+    "name": "upload build results.upload publickey.pem to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@publickey.pem@https://storage.cloud.google.com/###fuchsia-build###/builds/8945511751514863184/publickey.pem@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-h",
+      "x-goog-meta-signature:signature",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "cp",
+      "[START_DIR]/out/default/build-archive.tgz",
+      "gs://###fuchsia-build###/builds/8945511751514863184/build-archive.tgz"
+    ],
+    "infra_step": true,
+    "name": "upload build results.upload build-archive.tgz to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@build-archive.tgz@https://storage.cloud.google.com/###fuchsia-build###/builds/8945511751514863184/build-archive.tgz@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[START_DIR]/third_party/catapult/tracing/bin/trace2html",
+      "--output",
+      "[CLEANUP]/gn_trace.html",
+      "[CLEANUP]/gn_trace.json"
+    ],
+    "name": "upload build results.gn trace2html",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[START_DIR]/third_party/catapult/tracing/bin/trace2html",
+      "--output",
+      "[CLEANUP]/zircon_gn_trace.html",
+      "[CLEANUP]/zircon_gn_trace.json"
+    ],
+    "name": "upload build results.gn trace2html (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/out/default/linux_x64/ninjatrace",
+      "-filename",
+      "[START_DIR]/out/default/.ninja_log",
+      "-trace-json",
+      "[CLEANUP]/ninja_trace.json"
+    ],
+    "name": "upload build results.ninja tracing",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[START_DIR]/third_party/catapult/tracing/bin/trace2html",
+      "--output",
+      "[CLEANUP]/ninja_trace.html",
+      "[CLEANUP]/ninja_trace.json"
+    ],
+    "name": "upload build results.ninja trace2html",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/out/default/linux_x64/ninjatrace",
+      "-filename",
+      "[START_DIR]/out/default.zircon/.ninja_log",
+      "-trace-json",
+      "[CLEANUP]/zircon_ninja_trace.json"
+    ],
+    "name": "upload build results.ninja tracing (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python",
+      "-u",
+      "[START_DIR]/third_party/catapult/tracing/bin/trace2html",
+      "--output",
+      "[CLEANUP]/zircon_ninja_trace.html",
+      "[CLEANUP]/zircon_ninja_trace.json"
+    ],
+    "name": "upload build results.ninja trace2html (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "cp",
+      "[CLEANUP]/gn_trace.html",
+      "gs://###fuchsia-build###/builds/8945511751514863184/gn_trace.html"
+    ],
+    "infra_step": true,
+    "name": "upload build results.upload gn_trace.html to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@gn_trace.html@https://storage.cloud.google.com/###fuchsia-build###/builds/8945511751514863184/gn_trace.html@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "cp",
+      "[CLEANUP]/zircon_gn_trace.html",
+      "gs://###fuchsia-build###/builds/8945511751514863184/zircon_gn_trace.html"
+    ],
+    "infra_step": true,
+    "name": "upload build results.upload zircon_gn_trace.html to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@zircon_gn_trace.html@https://storage.cloud.google.com/###fuchsia-build###/builds/8945511751514863184/zircon_gn_trace.html@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "cp",
+      "[CLEANUP]/ninja_trace.html",
+      "gs://###fuchsia-build###/builds/8945511751514863184/ninja_trace.html"
+    ],
+    "infra_step": true,
+    "name": "upload build results.upload ninja_trace.html to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@ninja_trace.html@https://storage.cloud.google.com/###fuchsia-build###/builds/8945511751514863184/ninja_trace.html@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "cp",
+      "[CLEANUP]/zircon_ninja_trace.html",
+      "gs://###fuchsia-build###/builds/8945511751514863184/zircon_ninja_trace.html"
+    ],
+    "infra_step": true,
+    "name": "upload build results.upload zircon_ninja_trace.html to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@zircon_ninja_trace.html@https://storage.cloud.google.com/###fuchsia-build###/builds/8945511751514863184/zircon_ninja_trace.html@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/prebuilt/third_party/dart/linux_x64/dart",
+      "--packages=[START_DIR]/scripts/blobstats/blobstats.packages",
+      "[START_DIR]/scripts/blobstats/blobstats.dart",
+      "--output=[CLEANUP]/blobstats"
+    ],
+    "cwd": "[START_DIR]/out/default",
+    "name": "upload build results.blobstats",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
+      "-u",
+      "[START_DIR]/cipd/gsutil/gsutil",
+      "-o",
+      "GSUtil:software_update_check_period=0",
+      "-m",
+      "rsync",
+      "-r",
+      "[CLEANUP]/blobstats",
+      "gs://###fuchsia-build###/builds/8945511751514863184/blobstats"
+    ],
+    "infra_step": true,
+    "name": "upload build results.upload blobstats to ###fuchsia-build###",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LINK@blobstats@https://console.cloud.google.com/storage/browser/###fuchsia-build###/builds/8945511751514863184/blobstats@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/out/default/linux_x64/testsharder",
+      "-build-dir",
+      "[START_DIR]/out/default",
+      "-output-file",
+      "/path/to/tmp/json"
+    ],
+    "name": "create test shards",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@[@@@",
+      "@@@STEP_LOG_LINE@json.output@  {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"deps\": [], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"environment\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"dimensions\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"device_type\": \"Khadas Vim2 Max\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    }, @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"name\": \"Vim2\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"tests\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"install_path\": \"/path/to/test\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"label\": \"//path/to/test:test(//toolchain)\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"name\": \"test\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"os\": \"linux\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"path\": \"/path/to/test\"@@@",
+      "@@@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@@@"
+    ]
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file
diff --git a/recipe_modules/build/examples/full.expected/release_with_version.json b/recipe_modules/build/examples/full.expected/release_with_version.json
index 3d63d20..a2312a8 100644
--- a/recipe_modules/build/examples/full.expected/release_with_version.json
+++ b/recipe_modules/build/examples/full.expected/release_with_version.json
@@ -3147,6 +3147,21 @@
     "cmd": [
       "vpython",
       "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::build]/resources/sign.py.vpython",
+      "-u",
+      "RECIPE_MODULE[fuchsia::build]/resources/sign.py",
+      "--archive-file",
+      "[START_DIR]/out/default/build-archive.tgz"
+    ],
+    "name": "upload build results.run signing script",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
       "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
       "-u",
       "[START_DIR]/cipd/gsutil/gsutil",
diff --git a/recipe_modules/build/examples/full.expected/upload_debug_symbols_from_release_version.json b/recipe_modules/build/examples/full.expected/upload_debug_symbols_from_release_version.json
index 3b275ad..1937838 100644
--- a/recipe_modules/build/examples/full.expected/upload_debug_symbols_from_release_version.json
+++ b/recipe_modules/build/examples/full.expected/upload_debug_symbols_from_release_version.json
@@ -3147,6 +3147,21 @@
     "cmd": [
       "vpython",
       "-vpython-spec",
+      "RECIPE_MODULE[fuchsia::build]/resources/sign.py.vpython",
+      "-u",
+      "RECIPE_MODULE[fuchsia::build]/resources/sign.py",
+      "--archive-file",
+      "[START_DIR]/out/default/build-archive.tgz"
+    ],
+    "name": "upload build results.run signing script",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-vpython-spec",
       "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
       "-u",
       "[START_DIR]/cipd/gsutil/gsutil",
diff --git a/recipe_modules/build/examples/full.py b/recipe_modules/build/examples/full.py
index 69ab3b0..f7464a6 100644
--- a/recipe_modules/build/examples/full.py
+++ b/recipe_modules/build/examples/full.py
@@ -205,7 +205,10 @@
     build.upload_debug_symbols(
         debug_symbol_gcs_bucket=debug_symbol_gcs_bucket, gcs_bucket=gcs_bucket)
   if gcs_bucket:
-    build.upload_results(gcs_bucket=gcs_bucket)
+    build.upload_results(
+        gcs_bucket=gcs_bucket,
+        is_release_version=True if checkout.release_version else False,
+    )
 
   # Run the testsharder to collect test specifications and shard them.
   # Always create shards regardless test_in_shards in true or not.
@@ -261,6 +264,20 @@
       ),
   )
 
+  # Test signing a release build.
+  yield api.build.test(
+      'release_with_signature',
+      properties=dict(
+          build_type='release',
+          release_version='0.19700101.0.77',
+          product='topaz/products/default.gni',
+          board='topaz/boards/x64.gni',
+      ),
+  ) + api.step_data(
+      'upload build results.run signing script',
+      stdout=api.raw_io.output('signature'),
+  )
+
   yield api.build.test(
       'lto',
       properties=dict(variants=['lto']),
diff --git a/recipe_modules/build/resources/sign.py b/recipe_modules/build/resources/sign.py
new file mode 100644
index 0000000..f11d70f
--- /dev/null
+++ b/recipe_modules/build/resources/sign.py
@@ -0,0 +1,46 @@
+# Copyright 2019 The Fuchsia 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 argparse
+import os
+import json
+
+from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.primitives.serialization import load_pem_private_key
+
+RELEASE_PKEY_PATH = 'RELEASE_PKEY_PATH'
+RELEASE_PUBKEY_PATH = 'RELEASE_PUBKEY_PATH'
+
+
+def main():
+  parser = argparse.ArgumentParser()
+  parser.add_argument('--archive-file')
+  opts = parser.parse_args()
+
+  # Validate args
+  if not opts.archive_file or not os.path.exists(opts.archive_file):
+    return
+
+  # Check that private key/public key env vars are set.
+  pkey_path = os.environ.get(RELEASE_PKEY_PATH)
+  pubkey_path = os.environ.get(RELEASE_PUBKEY_PATH)
+
+  if not pkey_path or not pubkey_path:
+    return
+  # Open the private key file
+  if pkey_path:
+    with open(pkey_path, 'rb') as f:
+      pkey_data = f.read()
+  private_key = load_pem_private_key(pkey_data, None, default_backend())
+
+  # Open and sign the archive.
+  with open(opts.archive_file, 'rb') as f:
+    archive_data = f.read()
+
+  signature = private_key.sign(archive_data)
+  print(signature)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/recipe_modules/build/resources/sign.py.vpython b/recipe_modules/build/resources/sign.py.vpython
new file mode 100644
index 0000000..e20a6cc
--- /dev/null
+++ b/recipe_modules/build/resources/sign.py.vpython
@@ -0,0 +1,61 @@
+# This is a vpython "spec" file.
+#
+# It describes patterns for python wheel dependencies of the python scripts in
+# the chromium repo, particularly for dependencies that have compiled components
+# (since pure-python dependencies can be easily vendored into third_party).
+#
+# When vpython is invoked, it finds this file and builds a python VirtualEnv,
+# containing all of the dependencies described in this file, fetching them from
+# CIPD (the "Chrome Infrastructure Package Deployer" service). Unlike `pip`,
+# this never requires the end-user machine to have a working python extension
+# compilation environment. All of these packages are built using:
+#   https://chromium.googlesource.com/infra/infra/+/master/infra/tools/dockerbuild/
+#
+# All python scripts in the repo share this same spec, to avoid dependency
+# fragmentation.
+#
+# If you have depot_tools installed in your $PATH, you can invoke python scripts
+# in this repo by running them as you normally would run them, except
+# substituting `vpython` instead of `python` on the command line, e.g.:
+#   vpython path/to/script.py some --arguments
+#
+# Read more about `vpython` and how to modify this file here:
+#   https://chromium.googlesource.com/infra/infra/+/master/doc/users/vpython.md
+
+python_version: "2.7"
+
+wheel: <
+  name: "infra/python/wheels/cryptography/${vpython_platform}"
+  version: "version:2.6.1"
+>
+
+wheel: <
+  name: "infra/python/wheels/enum34-py2"
+  version: "version:1.1.6"
+>
+
+wheel: <
+  name: "infra/python/wheels/six-py2_py3"
+  version: "version:1.12.0"
+>
+
+wheel: <
+  name: "infra/python/wheels/cffi/${vpython_platform}"
+  version: "version:1.12.3"
+>
+
+wheel: <
+  name: "infra/python/wheels/ipaddress-py2"
+  version: "version:1.0.18"
+>
+
+wheel: <
+  name: "infra/python/wheels/pycparser-py2_py3"
+  version: "version:2.19"
+>
+
+wheel: <
+  name: "infra/python/wheels/asn1crypto-py2_py3"
+  version: "version:0.22.0"
+>
+
diff --git a/recipe_modules/upload/api.py b/recipe_modules/upload/api.py
index d43ea4d..87b4021 100644
--- a/recipe_modules/upload/api.py
+++ b/recipe_modules/upload/api.py
@@ -36,7 +36,7 @@
   FilePath = FilePath
   DirectoryPath = DirectoryPath
 
-  def file_to_gcs(self, source, bucket, subpath, namespace=None):
+  def file_to_gcs(self, source, bucket, subpath, namespace=None, metadata=None):
     """Uploads a file to GCS under a subpath specific to the given build.
 
     Will upload the file to:
@@ -49,6 +49,8 @@
         build-specific subdirectory.
       namespace (str or None): A unique ID for this build. Defaults to the current
         build ID or led run ID.
+      metadata (dict): A dictionary of metatadata values to upload along with
+        the file.
     Returns:
       The upload step.
     """
@@ -57,6 +59,7 @@
         src=source,
         dst=self._absolute_gcs_path(subpath, namespace),
         link_name=subpath,
+        metadata=metadata,
         name='upload %s to %s' % (subpath, bucket))
 
   def directory_to_gcs(self, source, bucket, subpath, namespace=None):