bazel_roll: Nest steps

Also no longer take the roll name from the name in the WORKSPACE file
(e.g., "foo" for things referenced with "@foo"). We need the roll name
before we even read the WORKSPACE file now.

Bug: b/341756093
Change-Id: Ic431b85b51eedd2ce66659fb44d97dc9cb1f021e
Reviewed-on: https://pigweed-review.googlesource.com/c/infra/recipes/+/235772
Reviewed-by: Taylor Cramer <cramertj@google.com>
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Commit-Queue: Rob Mohr <mohrr@google.com>
diff --git a/recipe_modules/bazel_roll/api.py b/recipe_modules/bazel_roll/api.py
index 6a44d16..9c4d60c 100644
--- a/recipe_modules/bazel_roll/api.py
+++ b/recipe_modules/bazel_roll/api.py
@@ -98,58 +98,65 @@
         checkout: checkout_self.m.CheckoutContext,
         git_repository: GitRepository,
     ) -> list[git_roll_util_api.Roll]:
-        workspace_path = self.workspace_path(
-            checkout.root,
-            git_repository.workspace_path,
-        )
-        git_repository.branch = git_repository.branch or 'main'
-
-        new_revision = self.m.git_roll_util.resolve_new_revision(
-            git_repository.remote,
-            git_repository.branch,
-            checkout.remotes_equivalent,
-        )
-
-        update_result = self.m.bazel.update_commit_hash(
-            checkout=checkout,
-            project_remote=git_repository.remote,
-            new_revision=new_revision,
-            path=workspace_path,
-            delay_write=True,
-        )
-        if not update_result:
-            self.m.step.empty('failed to update commit hash', status='FAILURE')
-
-        project_name = git_repository.name or update_result.project_name
+        project_name = git_repository.name
         if not project_name:
-            self.m.step.empty(
-                f'could not find name line in {workspace_path}',
-                status='FAILURE',
+            project_name = git_repository.remote.split('/')[-1]
+            project_name = project_name.removesuffix('.git')
+
+        with self.m.step.nest(project_name):
+            workspace_path = self.workspace_path(
+                checkout.root,
+                git_repository.workspace_path,
+            )
+            git_repository.branch = git_repository.branch or 'main'
+
+            new_revision = self.m.git_roll_util.resolve_new_revision(
+                git_repository.remote,
+                git_repository.branch,
+                checkout.remotes_equivalent,
             )
 
-        try:
-            roll = self.m.git_roll_util.get_roll(
-                repo_url=git_repository.remote,
-                repo_short_name=project_name,
-                old_rev=update_result.old_revision,
-                new_rev=new_revision,
-            )
-
-        except self.m.git_roll_util.BackwardsRollError:
-            return []
-
-        update_result.finalize()
-
-        with self.m.step.nest('update MODULE.bazel.lock'):
-            runner = self.m.bazel.new_runner(
+            update_result = self.m.bazel.update_commit_hash(
                 checkout=checkout,
-                options=BazelOptions(),
+                project_remote=git_repository.remote,
+                new_revision=new_revision,
+                path=workspace_path,
+                delay_write=True,
             )
-
-            with self.m.context(cwd=checkout.root):
-                self.m.step(
-                    'bazelisk mod deps --lockfile_mode=update',
-                    [runner.ensure(), 'mod', 'deps', '--lockfile_mode=update'],
+            if not update_result:
+                self.m.step.empty(
+                    'failed to update commit hash',
+                    status='FAILURE',
                 )
 
-        return [roll]
+            try:
+                roll = self.m.git_roll_util.get_roll(
+                    repo_url=git_repository.remote,
+                    repo_short_name=project_name,
+                    old_rev=update_result.old_revision,
+                    new_rev=new_revision,
+                )
+
+            except self.m.git_roll_util.BackwardsRollError:
+                return []
+
+            update_result.finalize()
+
+            with self.m.step.nest('update MODULE.bazel.lock'):
+                runner = self.m.bazel.new_runner(
+                    checkout=checkout,
+                    options=BazelOptions(),
+                )
+
+                with self.m.context(cwd=checkout.root):
+                    self.m.step(
+                        'bazelisk mod deps --lockfile_mode=update',
+                        [
+                            runner.ensure(),
+                            'mod',
+                            'deps',
+                            '--lockfile_mode=update',
+                        ],
+                    )
+
+            return [roll]
diff --git a/recipe_modules/bazel_roll/tests/full.expected/backwards.json b/recipe_modules/bazel_roll/tests/full.expected/backwards.json
index 60415f6..d7bfdff 100644
--- a/recipe_modules/bazel_roll/tests/full.expected/backwards.json
+++ b/recipe_modules/bazel_roll/tests/full.expected/backwards.json
@@ -1,5 +1,9 @@
 [
   {
+    "cmd": [],
+    "name": "pigweed"
+  },
+  {
     "cmd": [
       "git",
       "ls-remote",
@@ -7,9 +11,10 @@
       "https://pigweed.googlesource.com/pigweed/pigweed",
       "main"
     ],
-    "name": "git ls-remote",
+    "name": "pigweed.git ls-remote",
     "timeout": 600.0,
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@stdout@h3ll0\trefs/heads/main@@@",
       "@@@STEP_LOG_END@stdout@@@"
     ]
@@ -26,8 +31,9 @@
       "/path/to/tmp/"
     ],
     "infra_step": true,
-    "name": "read old WORKSPACE",
+    "name": "pigweed.read old WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
@@ -57,8 +63,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/other/repo.git'",
+    "name": "pigweed.found other remote 'https://pigweed.googlesource.com/other/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@2 @@@",
       "@@@STEP_LOG_LINE@lines@3 @@@",
       "@@@STEP_LOG_LINE@lines@4 @@@",
@@ -85,8 +92,9 @@
   },
   {
     "cmd": [],
-    "name": "found equivalent remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
+    "name": "pigweed.found equivalent remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@13     commit = \"invalid commit line won't be found\",@@@",
       "@@@STEP_LOG_LINE@lines@14 )@@@",
       "@@@STEP_LOG_LINE@lines@15 @@@",
@@ -113,8 +121,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/third/repo.git'",
+    "name": "pigweed.found other remote 'https://pigweed.googlesource.com/third/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@20     # ROLL: comment@@@",
       "@@@STEP_LOG_LINE@lines@21     # ROLL: lines!@@@",
       "@@@STEP_LOG_LINE@lines@22     commit = \"1111111111111111111111111111111111111111\",@@@",
@@ -141,8 +150,9 @@
   },
   {
     "cmd": [],
-    "name": "lines",
+    "name": "pigweed.lines",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@0_center@23@@@",
       "@@@STEP_LOG_END@0_center@@@",
       "@@@STEP_LOG_LINE@1_orig@13     commit = \"invalid commit line won't be found\",@@@",
@@ -197,13 +207,16 @@
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}"
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}.get packages",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.get packages",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -218,18 +231,18 @@
       "/path/to/tmp/"
     ],
     "infra_step": true,
-    "name": "ensure infra/tools/luci/gitiles/${platform}.get packages.read ensure file",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.get packages.read ensure file",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@cipd.ensure@infra/tools/luci/gitiles/${platform} version:pinned-version@@@",
       "@@@STEP_LOG_END@cipd.ensure@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -245,9 +258,9 @@
       "[START_DIR]/cipd_tool/infra/tools/luci/gitiles/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07"
     ],
     "infra_step": true,
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure package directory",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure package directory",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
+      "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
@@ -264,9 +277,9 @@
       "/path/to/tmp/json"
     ],
     "infra_step": true,
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure_installed",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure_installed",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -290,17 +303,19 @@
       "1111111111111111111111111111111111111111..h3ll0"
     ],
     "infra_step": true,
-    "name": "log pigweed",
+    "name": "pigweed.log pigweed",
     "timeout": 300.0,
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@[]@@@",
       "@@@STEP_LOG_END@json.output@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "detected backwards roll",
+    "name": "pigweed.detected backwards roll",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_TEXT@Detected backwards roll: expected 1111111 to precede h3ll0 in git history@@@"
     ]
   },
diff --git a/recipe_modules/bazel_roll/tests/full.expected/bad-trigger.json b/recipe_modules/bazel_roll/tests/full.expected/bad-trigger.json
index 0aee7ac..a2f4712 100644
--- a/recipe_modules/bazel_roll/tests/full.expected/bad-trigger.json
+++ b/recipe_modules/bazel_roll/tests/full.expected/bad-trigger.json
@@ -1,5 +1,12 @@
 [
   {
+    "cmd": [],
+    "name": "foo",
+    "~followup_annotations": [
+      "@@@STEP_FAILURE@@@"
+    ]
+  },
+  {
     "cmd": [
       "git",
       "ls-remote",
@@ -19,9 +26,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "git ls-remote",
+    "name": "foo.git ls-remote",
     "timeout": 600.0,
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@stdout@h3ll0\trefs/heads/main@@@",
       "@@@STEP_LOG_END@stdout@@@"
     ]
@@ -50,8 +58,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "read old WORKSPACE",
+    "name": "foo.read old WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
@@ -81,8 +90,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/other/repo.git'",
+    "name": "foo.found other remote 'https://pigweed.googlesource.com/other/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@2 @@@",
       "@@@STEP_LOG_LINE@lines@3 @@@",
       "@@@STEP_LOG_LINE@lines@4 @@@",
@@ -109,8 +119,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
+    "name": "foo.found other remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@13     commit = \"invalid commit line won't be found\",@@@",
       "@@@STEP_LOG_LINE@lines@14 )@@@",
       "@@@STEP_LOG_LINE@lines@15 @@@",
@@ -137,8 +148,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/third/repo.git'",
+    "name": "foo.found other remote 'https://pigweed.googlesource.com/third/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@20     # ROLL: comment@@@",
       "@@@STEP_LOG_LINE@lines@21     # ROLL: lines!@@@",
       "@@@STEP_LOG_LINE@lines@22     commit = \"1111111111111111111111111111111111111111\",@@@",
@@ -165,19 +177,23 @@
   },
   {
     "cmd": [],
-    "name": "could not find remote https://pigweed.googlesource.com/foo in [START_DIR]/checkout/bar/WORKSPACE"
+    "name": "foo.could not find remote https://pigweed.googlesource.com/foo in [START_DIR]/checkout/bar/WORKSPACE",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [],
-    "name": "failed to update commit hash",
+    "name": "foo.failed to update commit hash",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
   {
     "failure": {
       "failure": {},
-      "humanReason": "Step('failed to update commit hash') (retcode: 0)"
+      "humanReason": "Step('foo.failed to update commit hash') (retcode: 0)"
     },
     "name": "$result"
   }
diff --git a/recipe_modules/bazel_roll/tests/full.expected/no-trigger.json b/recipe_modules/bazel_roll/tests/full.expected/no-trigger.json
index 5568c80..b75bf1e 100644
--- a/recipe_modules/bazel_roll/tests/full.expected/no-trigger.json
+++ b/recipe_modules/bazel_roll/tests/full.expected/no-trigger.json
@@ -1,5 +1,9 @@
 [
   {
+    "cmd": [],
+    "name": "pigweed"
+  },
+  {
     "cmd": [
       "git",
       "ls-remote",
@@ -7,9 +11,10 @@
       "https://pigweed.googlesource.com/pigweed/pigweed",
       "main"
     ],
-    "name": "git ls-remote",
+    "name": "pigweed.git ls-remote",
     "timeout": 600.0,
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@stdout@h3ll0\trefs/heads/main@@@",
       "@@@STEP_LOG_END@stdout@@@"
     ]
@@ -26,8 +31,9 @@
       "/path/to/tmp/"
     ],
     "infra_step": true,
-    "name": "read old WORKSPACE",
+    "name": "pigweed.read old WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
@@ -57,8 +63,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/other/repo.git'",
+    "name": "pigweed.found other remote 'https://pigweed.googlesource.com/other/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@2 @@@",
       "@@@STEP_LOG_LINE@lines@3 @@@",
       "@@@STEP_LOG_LINE@lines@4 @@@",
@@ -85,8 +92,9 @@
   },
   {
     "cmd": [],
-    "name": "found equivalent remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
+    "name": "pigweed.found equivalent remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@13     commit = \"invalid commit line won't be found\",@@@",
       "@@@STEP_LOG_LINE@lines@14 )@@@",
       "@@@STEP_LOG_LINE@lines@15 @@@",
@@ -113,8 +121,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/third/repo.git'",
+    "name": "pigweed.found other remote 'https://pigweed.googlesource.com/third/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@20     # ROLL: comment@@@",
       "@@@STEP_LOG_LINE@lines@21     # ROLL: lines!@@@",
       "@@@STEP_LOG_LINE@lines@22     commit = \"1111111111111111111111111111111111111111\",@@@",
@@ -141,8 +150,9 @@
   },
   {
     "cmd": [],
-    "name": "lines",
+    "name": "pigweed.lines",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@0_center@23@@@",
       "@@@STEP_LOG_END@0_center@@@",
       "@@@STEP_LOG_LINE@1_orig@13     commit = \"invalid commit line won't be found\",@@@",
@@ -197,13 +207,16 @@
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}"
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}.get packages",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.get packages",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -218,18 +231,18 @@
       "/path/to/tmp/"
     ],
     "infra_step": true,
-    "name": "ensure infra/tools/luci/gitiles/${platform}.get packages.read ensure file",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.get packages.read ensure file",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@cipd.ensure@infra/tools/luci/gitiles/${platform} version:pinned-version@@@",
       "@@@STEP_LOG_END@cipd.ensure@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -245,9 +258,9 @@
       "[START_DIR]/cipd_tool/infra/tools/luci/gitiles/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07"
     ],
     "infra_step": true,
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure package directory",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure package directory",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
+      "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
@@ -264,9 +277,9 @@
       "/path/to/tmp/json"
     ],
     "infra_step": true,
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure_installed",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure_installed",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -290,9 +303,10 @@
       "1111111111111111111111111111111111111111..h3ll0"
     ],
     "infra_step": true,
-    "name": "log pigweed",
+    "name": "pigweed.log pigweed",
     "timeout": 300.0,
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@[@@@",
       "@@@STEP_LOG_LINE@json.output@  {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"author\": {@@@",
@@ -384,23 +398,26 @@
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers"
-  },
-  {
-    "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}",
+    "name": "pigweed.get gerrit change numbers",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
+    "cmd": [],
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
     "cmd": [
       "vpython3",
       "-u",
@@ -412,18 +429,18 @@
       "/path/to/tmp/"
     ],
     "infra_step": true,
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages.read ensure file",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages.read ensure file",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@cipd.ensure@infra/tools/luci/gerrit/${platform} version:pinned-version@@@",
       "@@@STEP_LOG_END@cipd.ensure@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
+      "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
@@ -439,9 +456,9 @@
       "[START_DIR]/cipd_tool/infra/tools/luci/gerrit/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07"
     ],
     "infra_step": true,
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure package directory",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure package directory",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@"
+      "@@@STEP_NEST_LEVEL@4@@@"
     ]
   },
   {
@@ -458,9 +475,9 @@
       "/path/to/tmp/json"
     ],
     "infra_step": true,
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure_installed",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure_installed",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -486,10 +503,10 @@
       "/path/to/tmp/json"
     ],
     "infra_step": true,
-    "name": "get gerrit change numbers.change details for 3e30158",
+    "name": "pigweed.get gerrit change numbers.change details for 3e30158",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -513,10 +530,10 @@
       "/path/to/tmp/json"
     ],
     "infra_step": true,
-    "name": "get gerrit change numbers.change details for 3380b83",
+    "name": "pigweed.get gerrit change numbers.change details for 3380b83",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -540,10 +557,10 @@
       "/path/to/tmp/json"
     ],
     "infra_step": true,
-    "name": "get gerrit change numbers.change details for 363caa9",
+    "name": "pigweed.get gerrit change numbers.change details for 363caa9",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -567,8 +584,9 @@
       "[START_DIR]/checkout/WORKSPACE"
     ],
     "infra_step": true,
-    "name": "write new WORKSPACE",
+    "name": "pigweed.write new WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    remote = \"https://pigweed.googlesource.com/other/repo.git\",@@@",
@@ -596,7 +614,10 @@
   },
   {
     "cmd": [],
-    "name": "update MODULE.bazel.lock"
+    "name": "pigweed.update MODULE.bazel.lock",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [
@@ -612,9 +633,9 @@
       "/path/to/tmp/json"
     ],
     "cwd": "[START_DIR]/checkout",
-    "name": "update MODULE.bazel.lock.ensure bazelisk",
+    "name": "pigweed.update MODULE.bazel.lock.ensure bazelisk",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -634,9 +655,9 @@
       "version"
     ],
     "cwd": "[START_DIR]/checkout",
-    "name": "update MODULE.bazel.lock.bazel version",
+    "name": "pigweed.update MODULE.bazel.lock.bazel version",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -647,9 +668,9 @@
       "--lockfile_mode=update"
     ],
     "cwd": "[START_DIR]/checkout",
-    "name": "update MODULE.bazel.lock.bazelisk mod deps --lockfile_mode=update",
+    "name": "pigweed.update MODULE.bazel.lock.bazelisk mod deps --lockfile_mode=update",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
diff --git a/recipe_modules/bazel_roll/tests/full.expected/success.json b/recipe_modules/bazel_roll/tests/full.expected/success.json
index 68924f0..defd6e0 100644
--- a/recipe_modules/bazel_roll/tests/full.expected/success.json
+++ b/recipe_modules/bazel_roll/tests/full.expected/success.json
@@ -1,5 +1,9 @@
 [
   {
+    "cmd": [],
+    "name": "pigweed"
+  },
+  {
     "cmd": [
       "vpython3",
       "-u",
@@ -23,8 +27,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "read old WORKSPACE",
+    "name": "pigweed.read old WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
@@ -54,8 +59,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/other/repo.git'",
+    "name": "pigweed.found other remote 'https://pigweed.googlesource.com/other/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@2 @@@",
       "@@@STEP_LOG_LINE@lines@3 @@@",
       "@@@STEP_LOG_LINE@lines@4 @@@",
@@ -82,8 +88,9 @@
   },
   {
     "cmd": [],
-    "name": "found equivalent remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
+    "name": "pigweed.found equivalent remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@13     commit = \"invalid commit line won't be found\",@@@",
       "@@@STEP_LOG_LINE@lines@14 )@@@",
       "@@@STEP_LOG_LINE@lines@15 @@@",
@@ -110,8 +117,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/third/repo.git'",
+    "name": "pigweed.found other remote 'https://pigweed.googlesource.com/third/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@20     # ROLL: comment@@@",
       "@@@STEP_LOG_LINE@lines@21     # ROLL: lines!@@@",
       "@@@STEP_LOG_LINE@lines@22     commit = \"1111111111111111111111111111111111111111\",@@@",
@@ -138,8 +146,9 @@
   },
   {
     "cmd": [],
-    "name": "lines",
+    "name": "pigweed.lines",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@0_center@23@@@",
       "@@@STEP_LOG_END@0_center@@@",
       "@@@STEP_LOG_LINE@1_orig@13     commit = \"invalid commit line won't be found\",@@@",
@@ -194,13 +203,16 @@
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}"
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}.get packages",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.get packages",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -227,18 +239,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "ensure infra/tools/luci/gitiles/${platform}.get packages.read ensure file",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.get packages.read ensure file",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@cipd.ensure@infra/tools/luci/gitiles/${platform} version:pinned-version@@@",
       "@@@STEP_LOG_END@cipd.ensure@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -266,9 +278,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure package directory",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure package directory",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
+      "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
@@ -297,9 +309,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure_installed",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure_installed",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -335,9 +347,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "log pigweed",
+    "name": "pigweed.log pigweed",
     "timeout": 300.0,
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@[@@@",
       "@@@STEP_LOG_LINE@json.output@  {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"author\": {@@@",
@@ -429,23 +442,26 @@
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers"
-  },
-  {
-    "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}",
+    "name": "pigweed.get gerrit change numbers",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
+    "cmd": [],
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
     "cmd": [
       "vpython3",
       "-u",
@@ -469,18 +485,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages.read ensure file",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages.read ensure file",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@cipd.ensure@infra/tools/luci/gerrit/${platform} version:pinned-version@@@",
       "@@@STEP_LOG_END@cipd.ensure@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
+      "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
@@ -508,9 +524,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure package directory",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure package directory",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@"
+      "@@@STEP_NEST_LEVEL@4@@@"
     ]
   },
   {
@@ -539,9 +555,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure_installed",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure_installed",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -579,10 +595,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.change details for 3e30158",
+    "name": "pigweed.get gerrit change numbers.change details for 3e30158",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -618,10 +634,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.change details for 3380b83",
+    "name": "pigweed.get gerrit change numbers.change details for 3380b83",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -657,10 +673,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.change details for 363caa9",
+    "name": "pigweed.get gerrit change numbers.change details for 363caa9",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -696,8 +712,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "write new WORKSPACE",
+    "name": "pigweed.write new WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    remote = \"https://pigweed.googlesource.com/other/repo.git\",@@@",
@@ -725,7 +742,10 @@
   },
   {
     "cmd": [],
-    "name": "update MODULE.bazel.lock"
+    "name": "pigweed.update MODULE.bazel.lock",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [
@@ -753,9 +773,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "update MODULE.bazel.lock.ensure bazelisk",
+    "name": "pigweed.update MODULE.bazel.lock.ensure bazelisk",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -787,9 +807,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "update MODULE.bazel.lock.bazel version",
+    "name": "pigweed.update MODULE.bazel.lock.bazel version",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -812,9 +832,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "update MODULE.bazel.lock.bazelisk mod deps --lockfile_mode=update",
+    "name": "pigweed.update MODULE.bazel.lock.bazelisk mod deps --lockfile_mode=update",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
diff --git a/recipe_modules/bazel_roll/tests/full.expected/unrecognized-remote.json b/recipe_modules/bazel_roll/tests/full.expected/unrecognized-remote.json
index 83c5a57..3bab984 100644
--- a/recipe_modules/bazel_roll/tests/full.expected/unrecognized-remote.json
+++ b/recipe_modules/bazel_roll/tests/full.expected/unrecognized-remote.json
@@ -1,5 +1,12 @@
 [
   {
+    "cmd": [],
+    "name": "unrecognized-remote",
+    "~followup_annotations": [
+      "@@@STEP_FAILURE@@@"
+    ]
+  },
+  {
     "cmd": [
       "vpython3",
       "-u",
@@ -23,8 +30,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "read old WORKSPACE",
+    "name": "unrecognized-remote.read old WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
@@ -54,8 +62,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/other/repo.git'",
+    "name": "unrecognized-remote.found other remote 'https://pigweed.googlesource.com/other/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@2 @@@",
       "@@@STEP_LOG_LINE@lines@3 @@@",
       "@@@STEP_LOG_LINE@lines@4 @@@",
@@ -82,8 +91,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
+    "name": "unrecognized-remote.found other remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@13     commit = \"invalid commit line won't be found\",@@@",
       "@@@STEP_LOG_LINE@lines@14 )@@@",
       "@@@STEP_LOG_LINE@lines@15 @@@",
@@ -110,8 +120,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/third/repo.git'",
+    "name": "unrecognized-remote.found other remote 'https://pigweed.googlesource.com/third/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@20     # ROLL: comment@@@",
       "@@@STEP_LOG_LINE@lines@21     # ROLL: lines!@@@",
       "@@@STEP_LOG_LINE@lines@22     commit = \"1111111111111111111111111111111111111111\",@@@",
@@ -138,19 +149,23 @@
   },
   {
     "cmd": [],
-    "name": "could not find remote https://pigweed.googlesource.com/unrecognized-remote in [START_DIR]/checkout/WORKSPACE"
+    "name": "unrecognized-remote.could not find remote https://pigweed.googlesource.com/unrecognized-remote in [START_DIR]/checkout/WORKSPACE",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [],
-    "name": "failed to update commit hash",
+    "name": "unrecognized-remote.failed to update commit hash",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
   {
     "failure": {
       "failure": {},
-      "humanReason": "Step('failed to update commit hash') (retcode: 0)"
+      "humanReason": "Step('unrecognized-remote.failed to update commit hash') (retcode: 0)"
     },
     "name": "$result"
   }
diff --git a/recipe_modules/bazel_roll/tests/full.py b/recipe_modules/bazel_roll/tests/full.py
index a8db328..968f795 100644
--- a/recipe_modules/bazel_roll/tests/full.py
+++ b/recipe_modules/bazel_roll/tests/full.py
@@ -71,7 +71,7 @@
         properties(api.bazel_roll.git_repo()),
         api.roll_util.properties(commit_divider='--divider--'),
         trigger('pigweed/pigweed'),
-        api.gitiles.log("log pigweed", "A"),
+        api.gitiles.log("pigweed.log pigweed", "A"),
     )
 
     yield api.test(
@@ -79,7 +79,10 @@
         properties(api.bazel_roll.git_repo(remote=_url('unrecognized-remote'))),
         api.roll_util.properties(commit_divider='--divider--'),
         trigger('unrecognized-remote'),
-        api.post_process(post_process.MustRun, 'failed to update commit hash'),
+        api.post_process(
+            post_process.MustRun,
+            'unrecognized-remote.failed to update commit hash',
+        ),
         status='FAILURE',
     )
 
@@ -96,22 +99,13 @@
     )
 
     yield api.test(
-        'name-not-found',
-        properties(api.bazel_roll.git_repo(remote=_url('third/repo'))),
-        trigger('third/repo'),
-        api.post_process(post_process.MustRunRE, r'could not find name.*'),
-        api.post_process(post_process.DropExpectation),
-        status='FAILURE',
-    )
-
-    yield api.test(
         'no-trigger',
         properties(api.bazel_roll.git_repo()),
-        api.gitiles.log("log pigweed", "A"),
+        api.gitiles.log("pigweed.log pigweed", "A"),
     )
 
     yield api.test(
         'backwards',
         properties(api.bazel_roll.git_repo()),
-        api.gitiles.log("log pigweed", "A", n=0),
+        api.gitiles.log("pigweed.log pigweed", "A", n=0),
     )
diff --git a/recipes/bazel_roller.expected/success.json b/recipes/bazel_roller.expected/success.json
index 82621d3..2c04b0e 100644
--- a/recipes/bazel_roller.expected/success.json
+++ b/recipes/bazel_roller.expected/success.json
@@ -950,6 +950,10 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "pigweed"
+  },
+  {
     "cmd": [
       "vpython3",
       "-u",
@@ -973,8 +977,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "read old WORKSPACE",
+    "name": "pigweed.read old WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
@@ -1004,8 +1009,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/other/repo.git'",
+    "name": "pigweed.found other remote 'https://pigweed.googlesource.com/other/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@2 @@@",
       "@@@STEP_LOG_LINE@lines@3 @@@",
       "@@@STEP_LOG_LINE@lines@4 @@@",
@@ -1032,8 +1038,9 @@
   },
   {
     "cmd": [],
-    "name": "found equivalent remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
+    "name": "pigweed.found equivalent remote 'https://pigweed.googlesource.com/pigweed/pigweed.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@13     commit = \"invalid commit line won't be found\",@@@",
       "@@@STEP_LOG_LINE@lines@14 )@@@",
       "@@@STEP_LOG_LINE@lines@15 @@@",
@@ -1060,8 +1067,9 @@
   },
   {
     "cmd": [],
-    "name": "found other remote 'https://pigweed.googlesource.com/third/repo.git'",
+    "name": "pigweed.found other remote 'https://pigweed.googlesource.com/third/repo.git'",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@lines@20     # ROLL: comment@@@",
       "@@@STEP_LOG_LINE@lines@21     # ROLL: lines!@@@",
       "@@@STEP_LOG_LINE@lines@22     commit = \"1111111111111111111111111111111111111111\",@@@",
@@ -1088,8 +1096,9 @@
   },
   {
     "cmd": [],
-    "name": "lines",
+    "name": "pigweed.lines",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@0_center@23@@@",
       "@@@STEP_LOG_END@0_center@@@",
       "@@@STEP_LOG_LINE@1_orig@13     commit = \"invalid commit line won't be found\",@@@",
@@ -1144,13 +1153,16 @@
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}"
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}.get packages",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.get packages",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -1177,18 +1189,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "ensure infra/tools/luci/gitiles/${platform}.get packages.read ensure file",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.get packages.read ensure file",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@cipd.ensure@infra/tools/luci/gitiles/${platform} version:pinned-version@@@",
       "@@@STEP_LOG_END@cipd.ensure@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -1216,9 +1228,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure package directory",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure package directory",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
+      "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
@@ -1247,9 +1259,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure_installed",
+    "name": "pigweed.ensure infra/tools/luci/gitiles/${platform}.install infra/tools/luci/gitiles.ensure_installed",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -1285,9 +1297,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "log pigweed",
+    "name": "pigweed.log pigweed",
     "timeout": 300.0,
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@[@@@",
       "@@@STEP_LOG_LINE@json.output@  {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"author\": {@@@",
@@ -1379,23 +1392,26 @@
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers"
-  },
-  {
-    "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}",
+    "name": "pigweed.get gerrit change numbers",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
+    "cmd": [],
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
     "cmd": [
       "vpython3",
       "-u",
@@ -1419,18 +1435,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages.read ensure file",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.get packages.read ensure file",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@cipd.ensure@infra/tools/luci/gerrit/${platform} version:pinned-version@@@",
       "@@@STEP_LOG_END@cipd.ensure@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
+      "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
@@ -1458,9 +1474,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure package directory",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure package directory",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@"
+      "@@@STEP_NEST_LEVEL@4@@@"
     ]
   },
   {
@@ -1489,9 +1505,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure_installed",
+    "name": "pigweed.get gerrit change numbers.ensure infra/tools/luci/gerrit/${platform}.install infra/tools/luci/gerrit.ensure_installed",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -1529,10 +1545,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.change details for 3e30158",
+    "name": "pigweed.get gerrit change numbers.change details for 3e30158",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -1568,10 +1584,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.change details for 3380b83",
+    "name": "pigweed.get gerrit change numbers.change details for 3380b83",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -1607,10 +1623,10 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "get gerrit change numbers.change details for 363caa9",
+    "name": "pigweed.get gerrit change numbers.change details for 363caa9",
     "timeout": 600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"_number\": 12345@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
@@ -1646,8 +1662,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "write new WORKSPACE",
+    "name": "pigweed.write new WORKSPACE",
     "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@git_repository(@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    name = \"other-repo\"@@@",
       "@@@STEP_LOG_LINE@WORKSPACE@    remote = \"https://pigweed.googlesource.com/other/repo.git\",@@@",
@@ -1675,7 +1692,10 @@
   },
   {
     "cmd": [],
-    "name": "update MODULE.bazel.lock"
+    "name": "pigweed.update MODULE.bazel.lock",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
   },
   {
     "cmd": [
@@ -1703,9 +1723,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "update MODULE.bazel.lock.ensure bazelisk",
+    "name": "pigweed.update MODULE.bazel.lock.ensure bazelisk",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
       "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
       "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
@@ -1737,9 +1757,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "update MODULE.bazel.lock.bazel version",
+    "name": "pigweed.update MODULE.bazel.lock.bazel version",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
@@ -1762,9 +1782,9 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "update MODULE.bazel.lock.bazelisk mod deps --lockfile_mode=update",
+    "name": "pigweed.update MODULE.bazel.lock.bazelisk mod deps --lockfile_mode=update",
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@"
+      "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
diff --git a/recipes/bazel_roller.py b/recipes/bazel_roller.py
index eed4b27..6efcb03 100644
--- a/recipes/bazel_roller.py
+++ b/recipes/bazel_roller.py
@@ -125,6 +125,6 @@
         'success',
         properties(GitRepository(remote=_url('pigweed/pigweed'))),
         trigger('pigweed/pigweed'),
-        api.gitiles.log("log pigweed", "A"),
+        api.gitiles.log('pigweed.log pigweed', 'A'),
         api.auto_roller.success(),
     )