Base implementation of the orchestrator.

This base implementation has enough functionality to orchestrate engine
builds with subbuilds using led. This will be used to validate all the
possible combinations build/test/archives that will be required for the
engine.

Change-Id: I84875ab4e328664cdc72b24a7ba9756b78f437ad
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/14861
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Kaushik Iska <kaushikiska@google.com>
diff --git a/recipe_modules/shard_util_v2/examples/full.expected/presubmit.json b/recipe_modules/shard_util_v2/examples/full.expected/presubmit.json
new file mode 100644
index 0000000..59ed22c
--- /dev/null
+++ b/recipe_modules/shard_util_v2/examples/full.expected/presubmit.json
@@ -0,0 +1,827 @@
+[
+  {
+    "cmd": [
+      "led",
+      "get-builder",
+      "luci.proj.try:Linux Engine Drone"
+    ],
+    "name": "led get-builder",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "led",
+      "edit",
+      "-p",
+      "$recipe_engine/led={\"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", \"rbe_cas_input\": {\"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", \"digest\": {\"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", \"size_bytes\": 91}}}",
+      "-p",
+      "recipe=\"engine_v2/builder\"",
+      "-p",
+      "dependencies=[{\"dependency\": \"android_sdk\"}, {\"dependency\": \"chrome_and_driver\"}]",
+      "-p",
+      "git_url=\"http://abc\"",
+      "-p",
+      "$recipe_engine/buildbucket={\"build\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"try-builder\", \"project\": \"proj\"}, \"createTime\": \"2018-05-25T23:50:17Z\", \"createdBy\": \"user:commit-bot@chromium.org\", \"id\": \"8945511751514863184\", \"infra\": {\"resultdb\": {\"invocation\": \"invocations/build:8945511751514863184\"}, \"swarming\": {\"priority\": 30}}, \"input\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"github.com\", \"patchset\": \"7\", \"project\": \"repo/a\"}], \"gitilesCommit\": {\"host\": \"github.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"repo/a\", \"ref\": \"refs/heads/main\"}}, \"number\": 123, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}]}}",
+      "-p",
+      "git_ref=\"refs/123/master\"",
+      "-p",
+      "build={\"drone_dimensions\": [\"dimension1=abc\"], \"gn\": [], \"name\": \"ios_debug\", \"ninja\": [\"ios_debug\"]}"
+    ],
+    "name": "led edit",
+    "stdin": "{\n\"buildbucket\": {\n\"bbagent_args\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"Linux Engine Drone\", \n\"project\": \"proj\"\n}, \n\"infra\": {\n\"swarming\": {\n\"priority\": -10\n}\n}\n}\n}\n}\n}",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"priority\": -10@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"builder\": \"try-builder\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createdBy\": \"user:commit-bot@chromium.org\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"id\": \"8945511751514863184\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"invocation\": \"invocations/build:8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"priority\": 30.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"change\": \"123456\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"host\": \"github.com\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"project\": \"repo/a\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"host\": \"github.com\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"project\": \"repo/a\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"number\": 123.0, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"key\": \"cq_experimental\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/led\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"rbe_cas_input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"size_bytes\": 91.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"gn\": [], @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependency\": \"android_sdk\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependency\": \"chrome_and_driver\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_ref\": \"refs/123/master\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_url\": \"http://abc\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "led",
+      "edit",
+      "-name",
+      "ios_debug"
+    ],
+    "name": "led edit (2)",
+    "stdin": "{\n\"buildbucket\": {\n\"bbagent_args\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"Linux Engine Drone\", \n\"project\": \"proj\"\n}, \n\"infra\": {\n\"swarming\": {\n\"priority\": -10\n}\n}, \n\"input\": {\n\"properties\": {\n\"$recipe_engine/buildbucket\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"try-builder\", \n\"project\": \"proj\"\n}, \n\"createTime\": \"2018-05-25T23:50:17Z\", \n\"createdBy\": \"user:commit-bot@chromium.org\", \n\"id\": \"8945511751514863184\", \n\"infra\": {\n\"resultdb\": {\n\"invocation\": \"invocations/build:8945511751514863184\"\n}, \n\"swarming\": {\n\"priority\": 30.0\n}\n}, \n\"input\": {\n\"gerritChanges\": [\n{\n\"change\": \"123456\", \n\"host\": \"github.com\", \n\"patchset\": \"7\", \n\"project\": \"repo/a\"\n}\n], \n\"gitilesCommit\": {\n\"host\": \"github.com\", \n\"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \n\"project\": \"repo/a\", \n\"ref\": \"refs/heads/main\"\n}\n}, \n\"number\": 123.0, \n\"tags\": [\n{\n\"key\": \"cq_experimental\", \n\"value\": \"false\"\n}\n]\n}\n}, \n\"$recipe_engine/led\": {\n\"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", \n\"rbe_cas_input\": {\n\"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", \n\"digest\": {\n\"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", \n\"size_bytes\": 91.0\n}\n}\n}, \n\"build\": {\n\"drone_dimensions\": [\n\"dimension1=abc\"\n], \n\"gn\": [], \n\"name\": \"ios_debug\", \n\"ninja\": [\n\"ios_debug\"\n]\n}, \n\"dependencies\": [\n{\n\"dependency\": \"android_sdk\"\n}, \n{\n\"dependency\": \"chrome_and_driver\"\n}\n], \n\"git_ref\": \"refs/123/master\", \n\"git_url\": \"http://abc\", \n\"recipe\": \"engine_v2/builder\"\n}\n}\n}\n}\n}\n}",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"priority\": -10@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"builder\": \"try-builder\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createdBy\": \"user:commit-bot@chromium.org\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"id\": \"8945511751514863184\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"invocation\": \"invocations/build:8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"priority\": 30.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"change\": \"123456\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"host\": \"github.com\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"project\": \"repo/a\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"host\": \"github.com\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"project\": \"repo/a\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"number\": 123.0, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"key\": \"cq_experimental\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/led\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"rbe_cas_input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"size_bytes\": 91.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"gn\": [], @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependency\": \"android_sdk\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependency\": \"chrome_and_driver\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_ref\": \"refs/123/master\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_url\": \"http://abc\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"name\": \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "led",
+      "edit",
+      "-r",
+      "engine_v2/builder"
+    ],
+    "name": "led edit (3)",
+    "stdin": "{\n\"buildbucket\": {\n\"bbagent_args\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"Linux Engine Drone\", \n\"project\": \"proj\"\n}, \n\"infra\": {\n\"swarming\": {\n\"priority\": -10\n}\n}, \n\"input\": {\n\"properties\": {\n\"$recipe_engine/buildbucket\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"try-builder\", \n\"project\": \"proj\"\n}, \n\"createTime\": \"2018-05-25T23:50:17Z\", \n\"createdBy\": \"user:commit-bot@chromium.org\", \n\"id\": \"8945511751514863184\", \n\"infra\": {\n\"resultdb\": {\n\"invocation\": \"invocations/build:8945511751514863184\"\n}, \n\"swarming\": {\n\"priority\": 30.0\n}\n}, \n\"input\": {\n\"gerritChanges\": [\n{\n\"change\": \"123456\", \n\"host\": \"github.com\", \n\"patchset\": \"7\", \n\"project\": \"repo/a\"\n}\n], \n\"gitilesCommit\": {\n\"host\": \"github.com\", \n\"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \n\"project\": \"repo/a\", \n\"ref\": \"refs/heads/main\"\n}\n}, \n\"number\": 123.0, \n\"tags\": [\n{\n\"key\": \"cq_experimental\", \n\"value\": \"false\"\n}\n]\n}\n}, \n\"$recipe_engine/led\": {\n\"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", \n\"rbe_cas_input\": {\n\"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", \n\"digest\": {\n\"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", \n\"size_bytes\": 91.0\n}\n}\n}, \n\"build\": {\n\"drone_dimensions\": [\n\"dimension1=abc\"\n], \n\"gn\": [], \n\"name\": \"ios_debug\", \n\"ninja\": [\n\"ios_debug\"\n]\n}, \n\"dependencies\": [\n{\n\"dependency\": \"android_sdk\"\n}, \n{\n\"dependency\": \"chrome_and_driver\"\n}\n], \n\"git_ref\": \"refs/123/master\", \n\"git_url\": \"http://abc\", \n\"recipe\": \"engine_v2/builder\"\n}\n}\n}\n}, \n\"name\": \"ios_debug\"\n}\n}",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"priority\": -10@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"builder\": \"try-builder\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createdBy\": \"user:commit-bot@chromium.org\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"id\": \"8945511751514863184\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"invocation\": \"invocations/build:8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"priority\": 30.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"change\": \"123456\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"host\": \"github.com\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"project\": \"repo/a\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"host\": \"github.com\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"project\": \"repo/a\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"number\": 123.0, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"key\": \"cq_experimental\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/led\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"rbe_cas_input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"size_bytes\": 91.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"gn\": [], @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependency\": \"android_sdk\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependency\": \"chrome_and_driver\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_ref\": \"refs/123/master\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_url\": \"http://abc\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"name\": \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "led",
+      "edit",
+      "-rbh",
+      "146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e/91"
+    ],
+    "name": "led edit (4)",
+    "stdin": "{\n\"buildbucket\": {\n\"bbagent_args\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"Linux Engine Drone\", \n\"project\": \"proj\"\n}, \n\"infra\": {\n\"swarming\": {\n\"priority\": -10\n}\n}, \n\"input\": {\n\"properties\": {\n\"$recipe_engine/buildbucket\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"try-builder\", \n\"project\": \"proj\"\n}, \n\"createTime\": \"2018-05-25T23:50:17Z\", \n\"createdBy\": \"user:commit-bot@chromium.org\", \n\"id\": \"8945511751514863184\", \n\"infra\": {\n\"resultdb\": {\n\"invocation\": \"invocations/build:8945511751514863184\"\n}, \n\"swarming\": {\n\"priority\": 30.0\n}\n}, \n\"input\": {\n\"gerritChanges\": [\n{\n\"change\": \"123456\", \n\"host\": \"github.com\", \n\"patchset\": \"7\", \n\"project\": \"repo/a\"\n}\n], \n\"gitilesCommit\": {\n\"host\": \"github.com\", \n\"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \n\"project\": \"repo/a\", \n\"ref\": \"refs/heads/main\"\n}\n}, \n\"number\": 123.0, \n\"tags\": [\n{\n\"key\": \"cq_experimental\", \n\"value\": \"false\"\n}\n]\n}\n}, \n\"$recipe_engine/led\": {\n\"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", \n\"rbe_cas_input\": {\n\"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", \n\"digest\": {\n\"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", \n\"size_bytes\": 91.0\n}\n}\n}, \n\"build\": {\n\"drone_dimensions\": [\n\"dimension1=abc\"\n], \n\"gn\": [], \n\"name\": \"ios_debug\", \n\"ninja\": [\n\"ios_debug\"\n]\n}, \n\"dependencies\": [\n{\n\"dependency\": \"android_sdk\"\n}, \n{\n\"dependency\": \"chrome_and_driver\"\n}\n], \n\"git_ref\": \"refs/123/master\", \n\"git_url\": \"http://abc\", \n\"recipe\": \"engine_v2/builder\"\n}\n}\n}\n}, \n\"name\": \"ios_debug\"\n}\n}",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"Linux Engine Drone\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"priority\": -10@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"bucket\": \"try\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"builder\": \"try-builder\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"project\": \"proj\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"createdBy\": \"user:commit-bot@chromium.org\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"id\": \"8945511751514863184\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"invocation\": \"invocations/build:8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"priority\": 30.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"change\": \"123456\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"host\": \"github.com\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                      \"project\": \"repo/a\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"host\": \"github.com\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"project\": \"repo/a\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"number\": 123.0, @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"key\": \"cq_experimental\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                    \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@                ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"$recipe_engine/led\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"rbe_cas_input\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@                  \"size_bytes\": 91.0@@@",
+      "@@@STEP_LOG_LINE@proto.output@                }@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"drone_dimensions\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dimension1=abc\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"gn\": [], @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"name\": \"ios_debug\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@              \"ninja\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              ]@@@",
+      "@@@STEP_LOG_LINE@proto.output@            }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"dependencies\": [@@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependency\": \"android_sdk\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@              {@@@",
+      "@@@STEP_LOG_LINE@proto.output@                \"dependency\": \"chrome_and_driver\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@              }@@@",
+      "@@@STEP_LOG_LINE@proto.output@            ], @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_ref\": \"refs/123/master\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"git_url\": \"http://abc\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"recipe\": \"engine_v2/builder\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@          }@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"name\": \"ios_debug\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }, @@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"cas_user_payload\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", @@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"size_bytes\": \"91\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "led",
+      "launch",
+      "-modernize"
+    ],
+    "name": "led launch",
+    "stdin": "{\n\"buildbucket\": {\n\"bbagent_args\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"Linux Engine Drone\", \n\"project\": \"proj\"\n}, \n\"infra\": {\n\"swarming\": {\n\"priority\": -10\n}\n}, \n\"input\": {\n\"properties\": {\n\"$recipe_engine/buildbucket\": {\n\"build\": {\n\"builder\": {\n\"bucket\": \"try\", \n\"builder\": \"try-builder\", \n\"project\": \"proj\"\n}, \n\"createTime\": \"2018-05-25T23:50:17Z\", \n\"createdBy\": \"user:commit-bot@chromium.org\", \n\"id\": \"8945511751514863184\", \n\"infra\": {\n\"resultdb\": {\n\"invocation\": \"invocations/build:8945511751514863184\"\n}, \n\"swarming\": {\n\"priority\": 30.0\n}\n}, \n\"input\": {\n\"gerritChanges\": [\n{\n\"change\": \"123456\", \n\"host\": \"github.com\", \n\"patchset\": \"7\", \n\"project\": \"repo/a\"\n}\n], \n\"gitilesCommit\": {\n\"host\": \"github.com\", \n\"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \n\"project\": \"repo/a\", \n\"ref\": \"refs/heads/main\"\n}\n}, \n\"number\": 123.0, \n\"tags\": [\n{\n\"key\": \"cq_experimental\", \n\"value\": \"false\"\n}\n]\n}\n}, \n\"$recipe_engine/led\": {\n\"led_run_id\": \"flutter/led/abc_google.com/b9861e3db1034eee460599837221ab468e03bc43f9fd05684a08157fd646abfc\", \n\"rbe_cas_input\": {\n\"cas_instance\": \"projects/chromium-swarm/instances/default_instance\", \n\"digest\": {\n\"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", \n\"size_bytes\": 91.0\n}\n}\n}, \n\"build\": {\n\"drone_dimensions\": [\n\"dimension1=abc\"\n], \n\"gn\": [], \n\"name\": \"ios_debug\", \n\"ninja\": [\n\"ios_debug\"\n]\n}, \n\"dependencies\": [\n{\n\"dependency\": \"android_sdk\"\n}, \n{\n\"dependency\": \"chrome_and_driver\"\n}\n], \n\"git_ref\": \"refs/123/master\", \n\"git_url\": \"http://abc\", \n\"recipe\": \"engine_v2/builder\"\n}\n}\n}\n}, \n\"name\": \"ios_debug\"\n}, \n\"cas_user_payload\": {\n\"digest\": {\n\"hash\": \"146d56311043bb141309968d570e23d05a108d13ce2e20b5aeb40a9b95629b3e\", \n\"size_bytes\": \"91\"\n}\n}\n}",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"chromium-swarm.appspot.com\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"task_id\": \"fake-task-id\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Swarming task@https://chromium-swarm.appspot.com/task?id=fake-task-id@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect builds",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@{@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"status\": \"SUCCESS\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@      \"value\": \"false\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@      \"key\": \"cq_experimental\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  ], @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    \"project\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    \"builder\": \"builder-subbuild1\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    \"bucket\": \"try\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"createdBy\": \"user:commit-bot@chromium.org\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"output\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@      \"test_orchestration_inputs_hash\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"input\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@      {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@        \"project\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@        \"host\": \"chromium-review.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@        \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@        \"change\": \"123456\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@      }@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    ]@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@      \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@      \"invocation\": \"invocations/build:8945511751514863186\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@  \"id\": \"8945511751514863186\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-1-build.proto.json@}@@@",
+      "@@@STEP_LOG_END@fake-task-id-1-build.proto.json@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@{@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"status\": \"SUCCESS\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@      \"value\": \"false\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@      \"key\": \"cq_experimental\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  ], @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    \"project\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    \"builder\": \"builder-subbuild2\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    \"bucket\": \"try\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"createdBy\": \"user:commit-bot@chromium.org\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"output\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@      \"test_orchestration_inputs_hash\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"input\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@      {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@        \"project\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@        \"host\": \"chromium-review.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@        \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@        \"change\": \"123456\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@      }@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    ]@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@      \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@      \"invocation\": \"invocations/build:8945511751514863187\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@  \"id\": \"8945511751514863187\"@@@",
+      "@@@STEP_LOG_LINE@fake-task-id-2-build.proto.json@}@@@",
+      "@@@STEP_LOG_END@fake-task-id-2-build.proto.json@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "collect builds.install infra/tools/luci/swarming",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "ensure-directory",
+      "--mode",
+      "0777",
+      "[CACHE]/cipd/infra/tools/luci/swarming/swarming_module_pin"
+    ],
+    "infra_step": true,
+    "name": "collect builds.install infra/tools/luci/swarming.ensure package directory",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[CACHE]/cipd/infra/tools/luci/swarming/swarming_module_pin",
+      "-ensure-file",
+      "infra/tools/luci/swarming/${platform} swarming_module_pin",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "collect builds.install infra/tools/luci/swarming.ensure_installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[CACHE]/cipd/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "collect",
+      "-server",
+      "https://example.swarmingserver.appspot.com",
+      "-task-summary-json",
+      "/path/to/tmp/json",
+      "-task-output-stdout",
+      "json",
+      "-output-dir",
+      "[CLEANUP]",
+      "fake-task-id"
+    ],
+    "infra_step": true,
+    "name": "collect builds.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"fake-task-id-1\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"name\": \"builder-subbuild1\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"fake-task-id-1\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@  }, @@@",
+      "@@@STEP_LOG_LINE@json.output@  \"fake-task-id-2\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\", @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
+      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"name\": \"builder-subbuild2\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"fake-task-id-2\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    }@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LOG_LINE@task stdout+stderr: builder-subbuild1@hello world!@@@",
+      "@@@STEP_LOG_END@task stdout+stderr: builder-subbuild1@@@",
+      "@@@STEP_LOG_LINE@task stdout+stderr: builder-subbuild2@hello world!@@@",
+      "@@@STEP_LOG_END@task stdout+stderr: builder-subbuild2@@@",
+      "@@@STEP_LINK@task isolated outputs: builder-subbuild1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@",
+      "@@@STEP_LINK@task isolated outputs: builder-subbuild2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CLEANUP]/fake-task-id-1/build.proto.json",
+      "/path/to/tmp/"
+    ],
+    "infra_step": true,
+    "name": "collect builds.read build.proto.json",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@{@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"status\": \"SUCCESS\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"value\": \"false\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"key\": \"cq_experimental\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  ], @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"project\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"builder\": \"builder-subbuild1\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"bucket\": \"try\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"createdBy\": \"user:commit-bot@chromium.org\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"output\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"test_orchestration_inputs_hash\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"input\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@        \"project\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@        \"host\": \"chromium-review.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@        \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@        \"change\": \"123456\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      }@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    ]@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"invocation\": \"invocations/build:8945511751514863186\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"id\": \"8945511751514863186\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@}@@@",
+      "@@@STEP_LOG_END@build.proto.json@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CLEANUP]/fake-task-id-2/build.proto.json",
+      "/path/to/tmp/"
+    ],
+    "infra_step": true,
+    "name": "collect builds.read build.proto.json (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@{@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"status\": \"SUCCESS\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"value\": \"false\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"key\": \"cq_experimental\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  ], @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"project\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"builder\": \"builder-subbuild2\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"bucket\": \"try\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"createdBy\": \"user:commit-bot@chromium.org\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"output\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"test_orchestration_inputs_hash\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"input\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@        \"project\": \"fuchsia\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@        \"host\": \"chromium-review.googlesource.com\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@        \"patchset\": \"7\", @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@        \"change\": \"123456\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      }@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    ]@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@      \"invocation\": \"invocations/build:8945511751514863187\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  }, @@@",
+      "@@@STEP_LOG_LINE@build.proto.json@  \"id\": \"8945511751514863187\"@@@",
+      "@@@STEP_LOG_LINE@build.proto.json@}@@@",
+      "@@@STEP_LOG_END@build.proto.json@@@"
+    ]
+  },
+  {
+    "name": "$result"
+  }
+]
\ No newline at end of file