Internal change

PiperOrigin-RevId: 417815015
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java
index 9cb65a9..6d303d0 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java
@@ -87,7 +87,7 @@
     barRelative = barPath.getRelative("barsource.txt");
 
     alienPath = PathFragment.create("external/alien");
-    alienPackage = PackageIdentifier.create("alien", alienPath);
+    alienPackage = PackageIdentifier.create("@alien", alienPath);
     alienRelative = alienPath.getRelative("alien.txt");
 
     artifactFactory = new ArtifactFactory(execRoot.getParentDirectory(), "bazel-out");
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderTest.java
index dfe77aa..fdf64e6 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/LocationExpanderTest.java
@@ -130,8 +130,9 @@
         .add("@bar//a", "/exec/src/a")
         .build();
 
-    ImmutableMap<RepositoryName, RepositoryName> repositoryMapping =
-        ImmutableMap.of(RepositoryName.create("foo"), RepositoryName.create("bar"));
+    ImmutableMap<RepositoryName, RepositoryName> repositoryMapping = ImmutableMap.of(
+        RepositoryName.create("@foo"),
+        RepositoryName.create("@bar"));
 
     LocationExpander locationExpander =
         new LocationExpander(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/LocationFunctionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/LocationFunctionTest.java
index 9f9b390..c333ad7 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/LocationFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/LocationFunctionTest.java
@@ -154,8 +154,8 @@
 
   @Test
   public void locationFunctionWithMappingReplace() throws Exception {
-    RepositoryName a = RepositoryName.create("a");
-    RepositoryName b = RepositoryName.create("b");
+    RepositoryName a = RepositoryName.create("@a");
+    RepositoryName b = RepositoryName.create("@b");
     ImmutableMap<RepositoryName, RepositoryName> repositoryMapping = ImmutableMap.of(a, b);
     LocationFunction func =
         new LocationFunctionBuilder("//foo", false).add("@b//foo", "/exec/src/bar").build();
@@ -165,8 +165,8 @@
 
   @Test
   public void locationFunctionWithMappingIgnoreRepo() throws Exception {
-    RepositoryName a = RepositoryName.create("a");
-    RepositoryName b = RepositoryName.create("b");
+    RepositoryName a = RepositoryName.create("@a");
+    RepositoryName b = RepositoryName.create("@b");
     ImmutableMap<RepositoryName, RepositoryName> repositoryMapping = ImmutableMap.of(a, b);
     LocationFunction func =
         new LocationFunctionBuilder("//foo", false).add("@potato//foo", "/exec/src/bar").build();
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValueTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValueTest.java
index eaea0af..1a8f286 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValueTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValueTest.java
@@ -389,16 +389,16 @@
     // these configurations are never trimmed nor even used to build targets so not an issue.
     new EqualsTester()
         .addEqualityGroup(
-            createRaw(parseBuildOptions("--test_arg=1a"), "testrepo", false),
-            createRaw(parseBuildOptions("--test_arg=1a"), "testrepo", false))
+            createRaw(parseBuildOptions("--test_arg=1a"), "@testrepo", false),
+            createRaw(parseBuildOptions("--test_arg=1a"), "@testrepo", false))
         // Different BuildOptions means non-equal
-        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=1b"), "testrepo", false))
+        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=1b"), "@testrepo", false))
         // Different --experimental_sibling_repository_layout means non-equal
-        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=2"), "testrepo", true))
-        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=2"), "testrepo", false))
+        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=2"), "@testrepo", true))
+        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=2"), "@testrepo", false))
         // Different repositoryName means non-equal
-        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=3"), "testrepo1", false))
-        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=3"), "testrepo2", false))
+        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=3"), "@testrepo1", false))
+        .addEqualityGroup(createRaw(parseBuildOptions("--test_arg=3"), "@testrepo2", false))
         .testEquals();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodTestUtil.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodTestUtil.java
index d4c6f29..f90f581 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodTestUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodTestUtil.java
@@ -40,8 +40,8 @@
     ImmutableMap.Builder<RepositoryName, RepositoryName> mappingBuilder = ImmutableMap.builder();
     for (int i = 0; i < names.length; i += 2) {
       mappingBuilder.put(
-          RepositoryName.createUnvalidated(names[i]),
-          RepositoryName.createUnvalidated(names[i + 1]));
+          RepositoryName.createFromValidStrippedName(names[i]),
+          RepositoryName.createFromValidStrippedName(names[i + 1]));
     }
     return RepositoryMapping.create(mappingBuilder.build(), key.getCanonicalRepoName());
   }
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/RepositoryOptionsTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/RepositoryOptionsTest.java
index 305622f..7160d46 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/RepositoryOptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/RepositoryOptionsTest.java
@@ -41,14 +41,16 @@
   @Test
   public void testOverrideConverter() throws Exception {
     RepositoryOverride actual = converter.convert("foo=/bar");
-    assertThat(actual.repositoryName()).isEqualTo(RepositoryName.createUnvalidated("foo"));
+    assertThat(actual.repositoryName())
+        .isEqualTo(RepositoryName.createFromValidStrippedName("foo"));
     assertThat(actual.path()).isEqualTo(PathFragment.create("/bar"));
   }
 
   @Test
   public void testOverridePathWithEqualsSign() throws Exception {
     RepositoryOverride actual = converter.convert("foo=/bar=/baz");
-    assertThat(actual.repositoryName()).isEqualTo(RepositoryName.createUnvalidated("foo"));
+    assertThat(actual.repositoryName())
+        .isEqualTo(RepositoryName.createFromValidStrippedName("foo"));
     assertThat(actual.path()).isEqualTo(PathFragment.create("/bar=/baz"));
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/blackbox/tests/workspace/WorkspaceBlackBoxTest.java b/src/test/java/com/google/devtools/build/lib/blackbox/tests/workspace/WorkspaceBlackBoxTest.java
index a578a2b..8be762c 100644
--- a/src/test/java/com/google/devtools/build/lib/blackbox/tests/workspace/WorkspaceBlackBoxTest.java
+++ b/src/test/java/com/google/devtools/build/lib/blackbox/tests/workspace/WorkspaceBlackBoxTest.java
@@ -261,7 +261,7 @@
     ProcessResult result = context().bazel().shouldFail().build("//...");
     assertThat(result.errString())
         .contains(
-            "invalid repository name '@a': repo names may contain only A-Z, a-z, 0-9, '-', '_' and"
-                + " '.'");
+            "invalid repository name '@@a': workspace names may contain only "
+                + "A-Z, a-z, 0-9, '-', '_' and '.'");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/SymlinkForestTest.java b/src/test/java/com/google/devtools/build/lib/buildtool/SymlinkForestTest.java
index d9f5ac9..de76ec4 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/SymlinkForestTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/SymlinkForestTest.java
@@ -167,7 +167,7 @@
       repoRoot.getRelative(pkg).createDirectoryAndParents();
       FileSystemUtils.createEmptyFile(repoRoot.getRelative(pkg).getChild("file"));
     }
-    return PackageIdentifier.create(RepositoryName.create(repo), PathFragment.create(pkg));
+    return PackageIdentifier.create(RepositoryName.create("@" + repo), PathFragment.create(pkg));
   }
 
   // Create package for main repo
@@ -177,7 +177,7 @@
       repoRoot.getRelative(pkg).createDirectoryAndParents();
       FileSystemUtils.createEmptyFile(repoRoot.getRelative(pkg).getChild("file"));
     }
-    return PackageIdentifier.createInMainRepo(PathFragment.create(pkg));
+    return PackageIdentifier.create(RepositoryName.create("@"), PathFragment.create(pkg));
   }
 
   private static void assertLinksTo(Path fromRoot, Root toRoot, String relpart) throws IOException {
diff --git a/src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java b/src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java
index a53defb..f4b89c3 100644
--- a/src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java
+++ b/src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java
@@ -54,19 +54,19 @@
     }
     {
       Label l = Label.parseAbsolute("@foo", ImmutableMap.of());
-      assertThat(l.getRepository().getNameWithAt()).isEqualTo("@foo");
+      assertThat(l.getRepository().getName()).isEqualTo("@foo");
       assertThat(l.getPackageName()).isEmpty();
       assertThat(l.getName()).isEqualTo("foo");
     }
     {
       Label l = Label.parseAbsolute("//@foo", ImmutableMap.of());
-      assertThat(l.getRepository().getNameWithAt()).isEqualTo("@");
+      assertThat(l.getRepository().getName()).isEqualTo("@");
       assertThat(l.getPackageName()).isEqualTo("@foo");
       assertThat(l.getName()).isEqualTo("@foo");
     }
     {
       Label l = Label.parseAbsolute("//xyz/@foo:abc", ImmutableMap.of());
-      assertThat(l.getRepository().getNameWithAt()).isEqualTo("@");
+      assertThat(l.getRepository().getName()).isEqualTo("@");
       assertThat(l.getPackageName()).isEqualTo("xyz/@foo");
       assertThat(l.getName()).isEqualTo("abc");
     }
@@ -133,22 +133,22 @@
 
   @Test
   public void testGetRelativeWithDifferentRepo() throws Exception {
-    PackageIdentifier packageId = PackageIdentifier.create("repo", PathFragment.create("foo"));
+    PackageIdentifier packageId = PackageIdentifier.create("@repo", PathFragment.create("foo"));
     Label base = Label.create(packageId, "bar");
 
     Label relative = base.getRelativeWithRemapping("@remote//x:y", ImmutableMap.of());
 
-    assertThat(relative.getRepository()).isEqualTo(RepositoryName.create("remote"));
+    assertThat(relative.getRepository()).isEqualTo(RepositoryName.create("@remote"));
     assertThat(relative.getPackageFragment()).isEqualTo(PathFragment.create("x"));
     assertThat(relative.getName()).isEqualTo("y");
   }
 
   @Test
   public void testGetRelativeWithoutRemappingBaseLabel() throws Exception {
-    PackageIdentifier packageId = PackageIdentifier.create("a", PathFragment.create("foo"));
+    PackageIdentifier packageId = PackageIdentifier.create("@a", PathFragment.create("foo"));
     Label base = Label.create(packageId, "bar");
     ImmutableMap<RepositoryName, RepositoryName> repoMapping =
-        ImmutableMap.of(RepositoryName.create("a"), RepositoryName.create("b"));
+        ImmutableMap.of(RepositoryName.create("@a"), RepositoryName.create("@b"));
     Label relative = base.getRelativeWithRemapping(":y", repoMapping);
 
     // getRelative should only remap repositories passed in the string arg and not
@@ -159,10 +159,10 @@
 
   @Test
   public void testGetRelativeWithDifferentRepoAndRemapping() throws Exception {
-    PackageIdentifier packageId = PackageIdentifier.create("repo", PathFragment.create("foo"));
+    PackageIdentifier packageId = PackageIdentifier.create("@repo", PathFragment.create("foo"));
     Label base = Label.create(packageId, "bar");
     ImmutableMap<RepositoryName, RepositoryName> repoMapping =
-        ImmutableMap.of(RepositoryName.create("a"), RepositoryName.create("b"));
+        ImmutableMap.of(RepositoryName.create("@a"), RepositoryName.create("@b"));
     Label relative = base.getRelativeWithRemapping("@a//x:y", repoMapping);
 
     Label actual = Label.parseAbsoluteUnchecked("@b//x:y");
@@ -171,7 +171,7 @@
 
   @Test
   public void testGetRelativeWithRepoLocalAbsoluteLabel() throws Exception {
-    PackageIdentifier packageId = PackageIdentifier.create("repo", PathFragment.create("foo"));
+    PackageIdentifier packageId = PackageIdentifier.create("@repo", PathFragment.create("foo"));
     Label base = Label.create(packageId, "bar");
 
     Label relative = base.getRelativeWithRemapping("//x:y", ImmutableMap.of());
@@ -183,7 +183,7 @@
 
   @Test
   public void testGetRelativeWithLocalRepoRelativeLabel() throws Exception {
-    PackageIdentifier packageId = PackageIdentifier.create("repo", PathFragment.create("foo"));
+    PackageIdentifier packageId = PackageIdentifier.create("@repo", PathFragment.create("foo"));
     Label base = Label.create(packageId, "bar");
 
     Label relative = base.getRelativeWithRemapping(":y", ImmutableMap.of());
@@ -195,7 +195,7 @@
 
   @Test
   public void testGetRelativeWithRepoAndReservedPackage() throws Exception {
-    PackageIdentifier packageId = PackageIdentifier.create("repo", PathFragment.create("foo"));
+    PackageIdentifier packageId = PackageIdentifier.create("@repo", PathFragment.create("foo"));
     Label base = Label.create(packageId, "bar");
 
     Label relative =
@@ -210,12 +210,12 @@
 
   @Test
   public void testGetRelativeWithRemoteRepoToDefaultRepo() throws Exception {
-    PackageIdentifier packageId = PackageIdentifier.create("repo", PathFragment.create("foo"));
+    PackageIdentifier packageId = PackageIdentifier.create("@repo", PathFragment.create("foo"));
     Label base = Label.create(packageId, "bar");
 
     Label relative = base.getRelativeWithRemapping("@//x:y", ImmutableMap.of());
 
-    assertThat(relative.getRepository()).isEqualTo(RepositoryName.MAIN);
+    assertThat(relative.getRepository()).isEqualTo(RepositoryName.create("@"));
     assertThat(relative.getPackageFragment()).isEqualTo(PathFragment.create("x"));
     assertThat(relative.getName()).isEqualTo("y");
   }
@@ -422,7 +422,7 @@
             LabelSyntaxException.class, () -> Label.parseAbsolute("@foo:xyz", ImmutableMap.of()));
     assertThat(e)
         .hasMessageThat()
-        .containsMatch("invalid repository name 'foo:xyz': repo names may contain only");
+        .containsMatch("invalid repository name '@foo:xyz': workspace names may contain only");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/cmdline/PackageIdentifierTest.java b/src/test/java/com/google/devtools/build/lib/cmdline/PackageIdentifierTest.java
index d781332..94ed237 100644
--- a/src/test/java/com/google/devtools/build/lib/cmdline/PackageIdentifierTest.java
+++ b/src/test/java/com/google/devtools/build/lib/cmdline/PackageIdentifierTest.java
@@ -29,19 +29,19 @@
   @Test
   public void testParsing() throws Exception {
     PackageIdentifier fooA = PackageIdentifier.parse("@foo//a");
-    assertThat(fooA.getRepository().getName()).isEqualTo("foo");
+    assertThat(fooA.getRepository().strippedName()).isEqualTo("foo");
     assertThat(fooA.getPackageFragment().getPathString()).isEqualTo("a");
     assertThat(fooA.getPackagePath(false)).isEqualTo(PathFragment.create("external/foo/a"));
     assertThat(fooA.getPackagePath(true)).isEqualTo(PathFragment.create("a"));
 
     PackageIdentifier absoluteA = PackageIdentifier.parse("//a");
-    assertThat(absoluteA.getRepository().getName()).isEmpty();
+    assertThat(absoluteA.getRepository().strippedName()).isEmpty();
     assertThat(absoluteA.getPackageFragment().getPathString()).isEqualTo("a");
     assertThat(absoluteA.getPackagePath(false)).isEqualTo(PathFragment.create("a"));
     assertThat(absoluteA.getPackagePath(true)).isEqualTo(PathFragment.create("a"));
 
     PackageIdentifier plainA = PackageIdentifier.parse("a");
-    assertThat(plainA.getRepository().getName()).isEmpty();
+    assertThat(plainA.getRepository().strippedName()).isEmpty();
     assertThat(plainA.getPackageFragment().getPathString()).isEqualTo("a");
     assertThat(plainA.getPackagePath(false)).isEqualTo(PathFragment.create("a"));
     assertThat(plainA.getPackagePath(true)).isEqualTo(PathFragment.create("a"));
@@ -57,16 +57,16 @@
   public void testToString() throws Exception {
     PackageIdentifier local = PackageIdentifier.create("", PathFragment.create("bar/baz"));
     assertThat(local.toString()).isEqualTo("bar/baz");
-    PackageIdentifier external = PackageIdentifier.create("foo", PathFragment.create("bar/baz"));
+    PackageIdentifier external = PackageIdentifier.create("@foo", PathFragment.create("bar/baz"));
     assertThat(external.toString()).isEqualTo("@foo//bar/baz");
   }
 
   @Test
   public void testCompareTo() throws Exception {
-    PackageIdentifier foo1 = PackageIdentifier.create("foo", PathFragment.create("bar/baz"));
-    PackageIdentifier foo2 = PackageIdentifier.create("foo", PathFragment.create("bar/baz"));
-    PackageIdentifier foo3 = PackageIdentifier.create("foo", PathFragment.create("bar/bz"));
-    PackageIdentifier bar = PackageIdentifier.create("bar", PathFragment.create("bar/baz"));
+    PackageIdentifier foo1 = PackageIdentifier.create("@foo", PathFragment.create("bar/baz"));
+    PackageIdentifier foo2 = PackageIdentifier.create("@foo", PathFragment.create("bar/baz"));
+    PackageIdentifier foo3 = PackageIdentifier.create("@foo", PathFragment.create("bar/bz"));
+    PackageIdentifier bar = PackageIdentifier.create("@bar", PathFragment.create("bar/baz"));
     assertThat(foo1.compareTo(foo2)).isEqualTo(0);
     assertThat(foo1.compareTo(foo3)).isLessThan(0);
     assertThat(foo1.compareTo(bar)).isGreaterThan(0);
@@ -75,22 +75,22 @@
   @Test
   public void testInvalidPackageName() throws Exception {
     // This shouldn't throw an exception, package names aren't validated.
-    PackageIdentifier.create("foo", PathFragment.create("bar.baz"));
+    PackageIdentifier.create("@foo", PathFragment.create("bar.baz"));
   }
 
   @Test
   public void testPackageFragmentEquality() throws Exception {
     // Make sure package fragments are canonicalized.
-    PackageIdentifier p1 = PackageIdentifier.create("whatever", PathFragment.create("foo/bar"));
-    PackageIdentifier p2 = PackageIdentifier.create("whatever", PathFragment.create("foo/bar"));
+    PackageIdentifier p1 = PackageIdentifier.create("@whatever", PathFragment.create("foo/bar"));
+    PackageIdentifier p2 = PackageIdentifier.create("@whatever", PathFragment.create("foo/bar"));
     assertThat(p1.getPackageFragment()).isSameInstanceAs(p2.getPackageFragment());
   }
 
   @Test
   public void testRunfilesDir() throws Exception {
-    assertThat(PackageIdentifier.create("foo", PathFragment.create("bar/baz")).getRunfilesPath())
+    assertThat(PackageIdentifier.create("@foo", PathFragment.create("bar/baz")).getRunfilesPath())
         .isEqualTo(PathFragment.create("../foo/bar/baz"));
-    assertThat(PackageIdentifier.create("", PathFragment.create("bar/baz")).getRunfilesPath())
+    assertThat(PackageIdentifier.create("@", PathFragment.create("bar/baz")).getRunfilesPath())
         .isEqualTo(PathFragment.create("bar/baz"));
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryMappingTest.java b/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryMappingTest.java
index e2e8f6c..ec6c179 100644
--- a/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryMappingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryMappingTest.java
@@ -29,44 +29,45 @@
   public void maybeFallback() throws Exception {
     RepositoryMapping mapping =
         RepositoryMapping.createAllowingFallback(
-            ImmutableMap.of(RepositoryName.create("A"), RepositoryName.create("com_foo_bar_a")));
-    assertThat(mapping.get(RepositoryName.create("A")))
-        .isEqualTo(RepositoryName.create("com_foo_bar_a"));
-    assertThat(mapping.get(RepositoryName.create("B"))).isEqualTo(RepositoryName.create("B"));
+            ImmutableMap.of(RepositoryName.create("@A"), RepositoryName.create("@com_foo_bar_a")));
+    assertThat(mapping.get(RepositoryName.create("@A")))
+        .isEqualTo(RepositoryName.create("@com_foo_bar_a"));
+    assertThat(mapping.get(RepositoryName.create("@B"))).isEqualTo(RepositoryName.create("@B"));
   }
 
   @Test
   public void neverFallback() throws Exception {
     RepositoryMapping mapping =
         RepositoryMapping.create(
-            ImmutableMap.of(RepositoryName.create("A"), RepositoryName.create("com_foo_bar_a")),
+            ImmutableMap.of(RepositoryName.create("@A"), RepositoryName.create("@com_foo_bar_a")),
             "fake_owner_repo");
-    assertThat(mapping.get(RepositoryName.create("A")))
-        .isEqualTo(RepositoryName.create("com_foo_bar_a"));
-    assertThat(mapping.get(RepositoryName.create("B")))
-        .isEqualTo(RepositoryName.create("B").toNonVisible("fake_owner_repo"));
+    assertThat(mapping.get(RepositoryName.create("@A")))
+        .isEqualTo(RepositoryName.create("@com_foo_bar_a"));
+    assertThat(mapping.get(RepositoryName.create("@B")))
+        .isEqualTo(RepositoryName.create("@B").toNonVisible("fake_owner_repo"));
 
     // Special repos should still be visible
-    assertThat(mapping.get(RepositoryName.create("bazel_tools")))
-        .isEqualTo(RepositoryName.create("bazel_tools"));
-    assertThat(mapping.get(RepositoryName.create("local_config_platform")))
-        .isEqualTo(RepositoryName.create("local_config_platform"));
+    assertThat(mapping.get(RepositoryName.create("@bazel_tools")))
+        .isEqualTo(RepositoryName.create("@bazel_tools"));
+    assertThat(mapping.get(RepositoryName.create("@local_config_platform")))
+        .isEqualTo(RepositoryName.create("@local_config_platform"));
   }
 
   @Test
   public void additionalMappings() throws Exception {
     RepositoryMapping mapping =
         RepositoryMapping.create(
-                ImmutableMap.of(RepositoryName.create("A"), RepositoryName.create("com_foo_bar_a")),
+                ImmutableMap.of(
+                    RepositoryName.create("@A"), RepositoryName.create("@com_foo_bar_a")),
                 "fake_owner_repo")
             .withAdditionalMappings(
                 ImmutableMap.of(
-                    RepositoryName.create("B"), RepositoryName.create("com_foo_bar_b")));
-    assertThat(mapping.get(RepositoryName.create("A")))
-        .isEqualTo(RepositoryName.create("com_foo_bar_a"));
-    assertThat(mapping.get(RepositoryName.create("B")))
-        .isEqualTo(RepositoryName.create("com_foo_bar_b"));
-    assertThat(mapping.get(RepositoryName.create("C")))
-        .isEqualTo(RepositoryName.create("C").toNonVisible("fake_owner_repo"));
+                    RepositoryName.create("@B"), RepositoryName.create("@com_foo_bar_b")));
+    assertThat(mapping.get(RepositoryName.create("@A")))
+        .isEqualTo(RepositoryName.create("@com_foo_bar_a"));
+    assertThat(mapping.get(RepositoryName.create("@B")))
+        .isEqualTo(RepositoryName.create("@com_foo_bar_b"));
+    assertThat(mapping.get(RepositoryName.create("@C")))
+        .isEqualTo(RepositoryName.create("@C").toNonVisible("fake_owner_repo"));
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryNameTest.java b/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryNameTest.java
index 2168bb7..fc3141a 100644
--- a/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryNameTest.java
+++ b/src/test/java/com/google/devtools/build/lib/cmdline/RepositoryNameTest.java
@@ -36,33 +36,38 @@
 
   @Test
   public void testValidateRepositoryName() throws Exception {
-    assertThat(RepositoryName.create("foo").getNameWithAt()).isEqualTo("@foo");
-    assertThat(RepositoryName.create("").getNameWithAt()).isEqualTo("@");
+    assertThat(RepositoryName.create("@foo").toString()).isEqualTo("@foo");
+    assertThat(RepositoryName.create("").toString()).isEqualTo("@");
     assertThat(RepositoryName.create("")).isSameInstanceAs(RepositoryName.MAIN);
-    assertThat(RepositoryName.create("foo_bar").getNameWithAt()).isEqualTo("@foo_bar");
-    assertThat(RepositoryName.create("foo-bar").getNameWithAt()).isEqualTo("@foo-bar");
-    assertThat(RepositoryName.create("foo.bar").getNameWithAt()).isEqualTo("@foo.bar");
-    assertThat(RepositoryName.create("..foo").getNameWithAt()).isEqualTo("@..foo");
-    assertThat(RepositoryName.create("foo..").getNameWithAt()).isEqualTo("@foo..");
-    assertThat(RepositoryName.create(".foo").getNameWithAt()).isEqualTo("@.foo");
+    assertThat(RepositoryName.create("@foo_bar").toString()).isEqualTo("@foo_bar");
+    assertThat(RepositoryName.create("@foo-bar").toString()).isEqualTo("@foo-bar");
+    assertThat(RepositoryName.create("@foo.bar").toString()).isEqualTo("@foo.bar");
+    assertThat(RepositoryName.create("@..foo").toString()).isEqualTo("@..foo");
+    assertThat(RepositoryName.create("@foo..").toString()).isEqualTo("@foo..");
+    assertThat(RepositoryName.create("@.foo").toString()).isEqualTo("@.foo");
 
-    assertNotValid(".", "repo names are not allowed to be '.'");
-    assertNotValid("..", "repo names are not allowed to be '..'");
-    assertNotValid("foo/bar", "repo names may contain only A-Z, a-z, 0-9, '-', '_' and '.'");
-    assertNotValid("foo@", "repo names may contain only A-Z, a-z, 0-9, '-', '_' and '.'");
-    assertNotValid("foo\0", "repo names may contain only A-Z, a-z, 0-9, '-', '_' and '.'");
+    assertNotValid("x", "workspace names must start with '@'");
+    assertNotValid("@.", "workspace names are not allowed to be '@.'");
+    assertNotValid("@..", "workspace names are not allowed to be '@..'");
+    assertNotValid("@foo/bar", "workspace names may contain only A-Z, a-z, 0-9, '-', '_' and '.'");
+    assertNotValid("@foo@", "workspace names may contain only A-Z, a-z, 0-9, '-', '_' and '.'");
+    assertNotValid("@foo\0", "workspace names may contain only A-Z, a-z, 0-9, '-', '_' and '.'");
   }
 
   @Test
   public void testRunfilesDir() throws Exception {
-    assertThat(RepositoryName.create("foo").getRunfilesPath())
+    assertThat(RepositoryName.create("@foo").getRunfilesPath())
         .isEqualTo(PathFragment.create("../foo"));
-    assertThat(RepositoryName.create("").getRunfilesPath()).isEqualTo(PathFragment.EMPTY_FRAGMENT);
+    assertThat(RepositoryName.create("@").getRunfilesPath())
+        .isEqualTo(PathFragment.EMPTY_FRAGMENT);
+    assertThat(RepositoryName.create("").getRunfilesPath())
+        .isEqualTo(PathFragment.EMPTY_FRAGMENT);
   }
 
   @Test
   public void testGetDefaultCanonicalForm() throws Exception {
     assertThat(RepositoryName.create("").getCanonicalForm()).isEqualTo("");
-    assertThat(RepositoryName.create("foo").getCanonicalForm()).isEqualTo("@foo");
+    assertThat(RepositoryName.create("@").getCanonicalForm()).isEqualTo("");
+    assertThat(RepositoryName.create("@foo").getCanonicalForm()).isEqualTo("@foo");
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/cmdline/TargetPatternTest.java b/src/test/java/com/google/devtools/build/lib/cmdline/TargetPatternTest.java
index 64963ba..0e50105 100644
--- a/src/test/java/com/google/devtools/build/lib/cmdline/TargetPatternTest.java
+++ b/src/test/java/com/google/devtools/build/lib/cmdline/TargetPatternTest.java
@@ -170,24 +170,28 @@
     RepositoryMapping renaming =
         RepositoryMapping.createAllowingFallback(
             ImmutableMap.of(
-                RepositoryName.create("foo"), RepositoryName.create("bar"),
-                RepositoryName.create("myworkspace"), RepositoryName.create("")));
+                RepositoryName.create("@foo"), RepositoryName.create("@bar"),
+                RepositoryName.create("@myworkspace"), RepositoryName.create("@")));
     TargetPattern.Parser parser =
         new TargetPattern.Parser(
-            PathFragment.EMPTY_FRAGMENT, RepositoryName.createUnvalidated("myrepo"), renaming);
+            PathFragment.EMPTY_FRAGMENT,
+            RepositoryName.createFromValidStrippedName("myrepo"),
+            renaming);
 
     // Expecting renaming
-    assertThat(parser.parse("@foo//package:target").getRepository().getName()).isEqualTo("bar");
+    assertThat(parser.parse("@foo//package:target").getRepository().strippedName())
+        .isEqualTo("bar");
     assertThat(parser.parse("@myworkspace//package:target").getRepository().isMain()).isTrue();
-    assertThat(parser.parse("@foo//foo/...").getRepository().getName()).isEqualTo("bar");
+    assertThat(parser.parse("@foo//foo/...").getRepository().strippedName()).isEqualTo("bar");
     assertThat(parser.parse("@myworkspace//foo/...").getRepository().isMain()).isTrue();
 
     // No renaming should occur
     assertThat(parser.parse("@//package:target").getRepository().isMain()).isTrue();
-    assertThat(parser.parse("@unrelated//package:target").getRepository().getName())
+    assertThat(parser.parse("@unrelated//package:target").getRepository().strippedName())
         .isEqualTo("unrelated");
-    assertThat(parser.parse("foo/package:target").getRepository().getName()).isEqualTo("myrepo");
-    assertThat(parser.parse("foo/...").getRepository().getName()).isEqualTo("myrepo");
+    assertThat(parser.parse("foo/package:target").getRepository().strippedName())
+        .isEqualTo("myrepo");
+    assertThat(parser.parse("foo/...").getRepository().strippedName()).isEqualTo("myrepo");
   }
 
   private static TargetPattern parse(String pattern) throws TargetParsingException {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/BuildTypeTest.java b/src/test/java/com/google/devtools/build/lib/packages/BuildTypeTest.java
index 688dc7c..bf1ee77 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/BuildTypeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/BuildTypeTest.java
@@ -272,7 +272,7 @@
             currentRule,
             RepositoryMapping.createAllowingFallback(
                 ImmutableMap.of(
-                    RepositoryName.create("orig_repo"), RepositoryName.create("new_repo"))),
+                    RepositoryName.create("@orig_repo"), RepositoryName.create("@new_repo"))),
             /* convertedLabelsInPackage= */ new HashMap<>());
     Label label = BuildType.LABEL.convert("@orig_repo//foo:bar", null, context);
     assertThat(label)
diff --git a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
index 4754764..e48acfc 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java
@@ -140,7 +140,7 @@
         "    path = '/foo',",
         "    repo_mapping = {'@x' : '@y'},",
         ")");
-    assertMapping(helper, "foo", "x", "y");
+    assertMapping(helper, "@foo", "@x", "@y");
   }
 
   @Test
@@ -156,8 +156,8 @@
         "    path = '/bar',",
         "    repo_mapping = {'@a' : '@b'},",
         ")");
-    assertMapping(helper, "foo", "x", "y");
-    assertMapping(helper, "bar", "a", "b");
+    assertMapping(helper, "@foo", "@x", "@y");
+    assertMapping(helper, "@bar", "@a", "@b");
   }
 
   @Test
@@ -168,9 +168,9 @@
         "    path = '/foo',",
         "    repo_mapping = {'@a' : '@b', '@c' : '@d', '@e' : '@f'},",
         ")");
-    assertMapping(helper, "foo", "a", "b");
-    assertMapping(helper, "foo", "c", "d");
-    assertMapping(helper, "foo", "e", "f");
+    assertMapping(helper, "@foo", "@a", "@b");
+    assertMapping(helper, "@foo", "@c", "@d");
+    assertMapping(helper, "@foo", "@e", "@f");
   }
 
   @Test
@@ -181,7 +181,7 @@
         "    path = '/foo',",
         "    repo_mapping = {},",
         ")");
-    assertThat(helper.getPackage().getRepositoryMapping(RepositoryName.create("foo"))).isEmpty();
+    assertThat(helper.getPackage().getRepositoryMapping(RepositoryName.create("@foo"))).isEmpty();
   }
 
   @Test
@@ -200,13 +200,13 @@
   @Test
   public void testImplicitMainRepoRename() throws Exception {
     helper.parse("workspace(name = 'foo')");
-    assertMapping(helper, "", "foo", "");
+    assertMapping(helper, "@", "@foo", "@");
   }
 
   @Test
   public void testEmptyRepositoryHasEmptyMap() throws Exception {
     helper.parse("");
-    assertThat(helper.getPackage().getRepositoryMapping(RepositoryName.create(""))).isEmpty();
+    assertThat(helper.getPackage().getRepositoryMapping(RepositoryName.create("@"))).isEmpty();
   }
 
   @Test
@@ -218,8 +218,8 @@
         "    path = '/foo',",
         "    repo_mapping = {'@x' : '@y', '@bar' : '@newname'},",
         ")");
-    assertMapping(helper, "foo", "x", "y");
-    assertMapping(helper, "foo", "bar", "newname");
+    assertMapping(helper, "@foo", "@x", "@y");
+    assertMapping(helper, "@foo", "@bar", "@newname");
   }
 
   private void assertMapping(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
index f6c5b9b..19315ff 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
@@ -148,7 +148,7 @@
   /** Checks the behavior of {@link ConfigSetting#isUnderToolsPackage}. */
   @Test
   public void isUnderToolsPackage() throws Exception {
-    RepositoryName toolsRepo = RepositoryName.create("tools");
+    RepositoryName toolsRepo = RepositoryName.create("@tools");
     // Subpackage of the tools package.
     assertThat(
             ConfigSetting.isUnderToolsPackage(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
index 4ddff1f..05f1ef8 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
@@ -371,7 +371,7 @@
     assertThat(ccCompilationContext.getIncludeDirs())
         .contains(
             getConfiguration(target)
-                .getGenfilesFragment(RepositoryName.create("bla"))
+                .getGenfilesFragment(RepositoryName.create("@bla"))
                 .getRelative("external/bla"));
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
index 951a1ce..a55418a 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java
@@ -381,7 +381,7 @@
     String genfiles =
         getTargetConfiguration()
             .getGenfilesFragment(
-                siblingRepoLayout ? RepositoryName.create("foo") : RepositoryName.MAIN)
+                siblingRepoLayout ? RepositoryName.create("@foo") : RepositoryName.MAIN)
             .toString();
     String fooProtoRoot;
     if (useVirtualImports) {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
index 98edfce..8b59dc2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java
@@ -273,10 +273,11 @@
   public void testOverride() throws Exception {
     RepositoryDelegatorFunction.REPOSITORY_OVERRIDES.set(
         differencer,
-        ImmutableMap.of(RepositoryName.createUnvalidated("foo"), overrideDirectory.asFragment()));
+        ImmutableMap.of(
+            RepositoryName.createFromValidStrippedName("foo"), overrideDirectory.asFragment()));
 
     StoredEventHandler eventHandler = new StoredEventHandler();
-    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createUnvalidated("foo"));
+    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createFromValidStrippedName("foo"));
     EvaluationContext evaluationContext =
         EvaluationContext.newBuilder()
             .setKeepGoing(false)
@@ -300,7 +301,7 @@
 
     RepositoryDirectoryDirtinessChecker checker =
         new RepositoryDirectoryDirtinessChecker(rootPath, knowledge);
-    RepositoryName repositoryName = RepositoryName.create("repo");
+    RepositoryName repositoryName = RepositoryName.create("@repo");
     RepositoryDirectoryValue.Key key = RepositoryDirectoryValue.key(repositoryName);
 
     SuccessfulRepositoryDirectoryValue usual =
@@ -332,7 +333,7 @@
     assertThat(managedDirectoryM.createDirectory()).isTrue();
 
     knowledge.setManagedDirectories(
-        ImmutableMap.of(PathFragment.create("m"), RepositoryName.create("other")));
+        ImmutableMap.of(PathFragment.create("m"), RepositoryName.create("@other")));
     assertThat(checker.check(key, withManagedDirectories, tsgm).isDirty()).isTrue();
 
     knowledge.setManagedDirectories(ImmutableMap.of(PathFragment.create("m"), repositoryName));
@@ -361,7 +362,7 @@
     // That's why we will directly fill managed directories value (the corresponding structure
     // is passed to RepositoryDelegatorFunction during construction).
     managedDirectoriesKnowledge.setManagedDirectories(
-        ImmutableMap.of(PathFragment.create("dir1"), RepositoryName.create("repo1")));
+        ImmutableMap.of(PathFragment.create("dir1"), RepositoryName.create("@repo1")));
 
     loadRepo("repo1");
 
@@ -389,9 +390,9 @@
     managedDirectoriesKnowledge.setManagedDirectories(
         ImmutableMap.of(
             PathFragment.create("dir1"),
-            RepositoryName.create("repo1"),
+            RepositoryName.create("@repo1"),
             PathFragment.create("dir2"),
-            RepositoryName.create("repo1")));
+            RepositoryName.create("@repo1")));
     loadRepo("repo1");
 
     assertThat(testStarlarkRepositoryFunction.isFetchCalled()).isTrue();
@@ -431,7 +432,7 @@
         "broken_repo(name = 'broken')");
 
     StoredEventHandler eventHandler = new StoredEventHandler();
-    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createUnvalidated("broken"));
+    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createFromValidStrippedName("broken"));
     // Make it be evaluated every time, as we are testing evaluation.
     differencer.invalidate(ImmutableSet.of(key));
     EvaluationContext evaluationContext =
@@ -455,7 +456,7 @@
     scratch.overwriteFile(rootPath.getRelative("WORKSPACE").getPathString(), "");
 
     StoredEventHandler eventHandler = new StoredEventHandler();
-    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createUnvalidated("foo"));
+    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createFromValidStrippedName("foo"));
     // Make it be evaluated every time, as we are testing evaluation.
     differencer.invalidate(ImmutableSet.of(key));
     EvaluationContext evaluationContext =
@@ -500,7 +501,7 @@
         "fictive_repo_rule(name = 'B.1.0')");
 
     StoredEventHandler eventHandler = new StoredEventHandler();
-    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createUnvalidated("B.1.0"));
+    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createFromValidStrippedName("B.1.0"));
     EvaluationContext evaluationContext =
         EvaluationContext.newBuilder()
             .setKeepGoing(false)
@@ -527,7 +528,7 @@
     StoredEventHandler eventHandler = new StoredEventHandler();
     SkyKey key =
         RepositoryDirectoryValue.key(
-            RepositoryName.createUnvalidated("foo").toNonVisible("fake_owner_repo"));
+            RepositoryName.createFromValidStrippedName("foo").toNonVisible("fake_owner_repo"));
     EvaluationContext evaluationContext =
         EvaluationContext.newBuilder()
             .setKeepGoing(false)
@@ -545,7 +546,8 @@
 
   private void loadRepo(String strippedRepoName) throws InterruptedException {
     StoredEventHandler eventHandler = new StoredEventHandler();
-    SkyKey key = RepositoryDirectoryValue.key(RepositoryName.createUnvalidated(strippedRepoName));
+    SkyKey key =
+        RepositoryDirectoryValue.key(RepositoryName.createFromValidStrippedName(strippedRepoName));
     // Make it be evaluated every time, as we are testing evaluation.
     differencer.invalidate(ImmutableSet.of(key));
     EvaluationContext evaluationContext =
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
index bf1cbc2..efec6b3 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java
@@ -944,7 +944,7 @@
     BuildConfigurationValue configuration =
         BuildConfigurationValue.create(
             defaultBuildOptions,
-            RepositoryName.createUnvalidated("workspace"),
+            RepositoryName.createFromValidStrippedName("workspace"),
             /*siblingRepositoryLayout=*/ false,
             new BlazeDirectories(
                 new ServerDirectories(outputBase, outputBase, outputBase),
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java
index 86b4465..c05f551 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java
@@ -251,10 +251,10 @@
     scratch.file("a/b/BUILD");
     ContainingPackageLookupValue value =
         lookupContainingPackage(
-            PackageIdentifier.create(RepositoryName.create("a"), PathFragment.create("b")));
+            PackageIdentifier.create(RepositoryName.create("@a"), PathFragment.create("b")));
     assertThat(value.hasContainingPackage()).isTrue();
     assertThat(value.getContainingPackageName())
-        .isEqualTo(PackageIdentifier.create(RepositoryName.create("a"), PathFragment.create("b")));
+        .isEqualTo(PackageIdentifier.create(RepositoryName.create("@a"), PathFragment.create("b")));
   }
 
   @Test
@@ -268,7 +268,7 @@
     ContainingPackageLookupValue value = lookupContainingPackage("a/b");
     assertThat(value.hasContainingPackage()).isTrue();
     assertThat(value.getContainingPackageName())
-        .isEqualTo(PackageIdentifier.create(RepositoryName.create("a"), PathFragment.create("b")));
+        .isEqualTo(PackageIdentifier.create(RepositoryName.create("@a"), PathFragment.create("b")));
   }
 
   @Test
@@ -300,7 +300,7 @@
   @Test
   public void testNonExistentExternalRepositoryErrorReason() throws Exception {
     PackageIdentifier identifier =
-        PackageIdentifier.create("some_repo", PathFragment.create(":atarget"));
+        PackageIdentifier.create("@some_repo", PathFragment.create(":atarget"));
     ContainingPackageLookupValue value = lookupContainingPackage(identifier);
     assertThat(value.hasContainingPackage()).isFalse();
     assertThat(value.getClass()).isEqualTo(NoContainingPackage.class);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/GlobDescriptorTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/GlobDescriptorTest.java
index ad10bd4..7eac47f 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/GlobDescriptorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/GlobDescriptorTest.java
@@ -34,13 +34,13 @@
     SerializationTester serializationTester =
         new SerializationTester(
                 GlobDescriptor.create(
-                    PackageIdentifier.create("foo", PathFragment.create("//bar")),
+                    PackageIdentifier.create("@foo", PathFragment.create("//bar")),
                     Root.fromPath(FsUtils.TEST_FILESYSTEM.getPath("/packageRoot")),
                     PathFragment.create("subdir"),
                     "pattern",
                     /*excludeDirs=*/ false),
                 GlobDescriptor.create(
-                    PackageIdentifier.create("bar", PathFragment.create("//foo")),
+                    PackageIdentifier.create("@bar", PathFragment.create("//foo")),
                     Root.fromPath(FsUtils.TEST_FILESYSTEM.getPath("/anotherPackageRoot")),
                     PathFragment.create("anotherSubdir"),
                     "pattern",
@@ -58,7 +58,7 @@
   public void testCreateReturnsInternedInstances() throws LabelSyntaxException {
     GlobDescriptor original =
         GlobDescriptor.create(
-            PackageIdentifier.create("foo", PathFragment.create("//bar")),
+            PackageIdentifier.create("@foo", PathFragment.create("//bar")),
             Root.fromPath(FsUtils.TEST_FILESYSTEM.getPath("/packageRoot")),
             PathFragment.create("subdir"),
             "pattern",
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
index 77cc3bb..32a0a51 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
@@ -193,7 +193,7 @@
             RootedPath.toRootedPath(
                 Root.fromPath(rootDirectory), PathFragment.create("local/repo")));
     assertThat(repositoryLookupValue).isNotNull();
-    assertThat(repositoryLookupValue.getRepository().getNameWithAt()).isEqualTo("@local");
+    assertThat(repositoryLookupValue.getRepository().getName()).isEqualTo("@local");
     assertThat(repositoryLookupValue.getPath()).isEqualTo(PathFragment.create("local/repo"));
   }
 
@@ -209,7 +209,7 @@
                 Root.fromPath(rootDirectory.getRelative("/abs")),
                 PathFragment.create("local/repo")));
     assertThat(repositoryLookupValue).isNotNull();
-    assertThat(repositoryLookupValue.getRepository().getNameWithAt()).isEqualTo("@local");
+    assertThat(repositoryLookupValue.getRepository().getName()).isEqualTo("@local");
     assertThat(repositoryLookupValue.getPath()).isEqualTo(PathFragment.create("/abs/local/repo"));
   }
 
@@ -224,7 +224,7 @@
             RootedPath.toRootedPath(
                 Root.fromPath(rootDirectory), PathFragment.create("local/repo")));
     assertThat(repositoryLookupValue).isNotNull();
-    assertThat(repositoryLookupValue.getRepository().getNameWithAt()).isEqualTo("@local");
+    assertThat(repositoryLookupValue.getRepository().getName()).isEqualTo("@local");
     assertThat(repositoryLookupValue.getPath()).isEqualTo(PathFragment.create("local/repo"));
   }
 
@@ -240,7 +240,7 @@
                 Root.fromPath(rootDirectory.getRelative("/abs")),
                 PathFragment.create("local/repo")));
     assertThat(repositoryLookupValue).isNotNull();
-    assertThat(repositoryLookupValue.getRepository().getNameWithAt()).isEqualTo("@local");
+    assertThat(repositoryLookupValue.getRepository().getName()).isEqualTo("@local");
     assertThat(repositoryLookupValue.getPath()).isEqualTo(PathFragment.create("/abs/local/repo"));
   }
 
@@ -256,7 +256,7 @@
             RootedPath.toRootedPath(
                 Root.fromPath(rootDirectory), PathFragment.create("local/repo/sub/package")));
     assertThat(repositoryLookupValue).isNotNull();
-    assertThat(repositoryLookupValue.getRepository().getNameWithAt()).isEqualTo("@local");
+    assertThat(repositoryLookupValue.getRepository().getName()).isEqualTo("@local");
     assertThat(repositoryLookupValue.getPath()).isEqualTo(PathFragment.create("local/repo"));
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
index 24fc055..baca435 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
@@ -382,7 +382,7 @@
 
     // First, use the correct label.
     PackageLookupValue packageLookupValue =
-        lookupPackage(PackageIdentifier.create("local", PathFragment.EMPTY_FRAGMENT));
+        lookupPackage(PackageIdentifier.create("@local", PathFragment.EMPTY_FRAGMENT));
     assertThat(packageLookupValue.packageExists()).isTrue();
 
     // Then, use the incorrect label.
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
index 5c426d2..b6030c7 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
@@ -86,7 +86,7 @@
   public static RepositoryMappingValue withMapping(
       ImmutableMap<RepositoryName, RepositoryName> repositoryMapping, RepositoryName ownerRepo) {
     return RepositoryMappingValue.withMapping(
-        RepositoryMapping.create(repositoryMapping, ownerRepo.getName()));
+        RepositoryMapping.create(repositoryMapping, ownerRepo.strippedName()));
   }
 
   public RepositoryMappingValue withMappingForRootModule(
@@ -94,11 +94,11 @@
     ImmutableMap.Builder<RepositoryName, RepositoryName> allMappings = ImmutableMap.builder();
     allMappings.putAll(repositoryMapping);
     for (String name : analysisMock.getWorkspaceRepos()) {
-      RepositoryName repoName = RepositoryName.createUnvalidated(name);
+      RepositoryName repoName = RepositoryName.createFromValidStrippedName(name);
       allMappings.put(repoName, repoName);
     }
     return RepositoryMappingValue.withMapping(
-        RepositoryMapping.create(allMappings.build(), ownerRepo.getName()));
+        RepositoryMapping.create(allMappings.build(), ownerRepo.strippedName()));
   }
 
   @Test
@@ -111,7 +111,7 @@
         "    path = '/a_remote_repo',",
         "    repo_mapping = {'@a' : '@b'},",
         ")");
-    RepositoryName name = RepositoryName.create("a_remote_repo");
+    RepositoryName name = RepositoryName.create("@a_remote_repo");
     SkyKey skyKey = RepositoryMappingValue.key(name);
     EvaluationResult<RepositoryMappingValue> result = eval(skyKey);
 
@@ -121,10 +121,10 @@
         .isEqualTo(
             withMappingAllowingFallback(
                 ImmutableMap.of(
-                    RepositoryName.create("a"),
-                    RepositoryName.create("b"),
-                    RepositoryName.create("good"),
-                    RepositoryName.create(""))));
+                    RepositoryName.create("@a"),
+                    RepositoryName.create("@b"),
+                    RepositoryName.create("@good"),
+                    RepositoryName.create("@"))));
   }
 
   @Test
@@ -145,12 +145,12 @@
         .isEqualTo(
             withMappingForRootModule(
                 ImmutableMap.of(
-                    RepositoryName.create(""),
-                    RepositoryName.create(""),
-                    RepositoryName.create("A"),
-                    RepositoryName.create(""),
-                    RepositoryName.create("com_foo_bar_b"),
-                    RepositoryName.create("B.1.0")),
+                    RepositoryName.create("@"),
+                    RepositoryName.create("@"),
+                    RepositoryName.create("@A"),
+                    RepositoryName.create("@"),
+                    RepositoryName.create("@com_foo_bar_b"),
+                    RepositoryName.create("@B.1.0")),
                 name));
   }
 
@@ -168,7 +168,7 @@
             "module(name='C', version='1.0')",
             "bazel_dep(name='B', version='1.0', repo_name='com_foo_bar_b')");
 
-    RepositoryName name = RepositoryName.create("C.1.0");
+    RepositoryName name = RepositoryName.create("@C.1.0");
     SkyKey skyKey = RepositoryMappingValue.key(name);
     EvaluationResult<RepositoryMappingValue> result = eval(skyKey);
 
@@ -178,10 +178,10 @@
         .isEqualTo(
             withMapping(
                 ImmutableMap.of(
-                    RepositoryName.create("C"),
-                    RepositoryName.create("C.1.0"),
-                    RepositoryName.create("com_foo_bar_b"),
-                    RepositoryName.create("B.1.0")),
+                    RepositoryName.create("@C"),
+                    RepositoryName.create("@C.1.0"),
+                    RepositoryName.create("@com_foo_bar_b"),
+                    RepositoryName.create("@B.1.0")),
                 name));
   }
 
@@ -194,7 +194,7 @@
         "module(name='B', version='1.0')",
         "bazel_dep(name='A',version='3.0')");
 
-    RepositoryName name = RepositoryName.create("B.1.0");
+    RepositoryName name = RepositoryName.create("@B.1.0");
     SkyKey skyKey = RepositoryMappingValue.key(name);
     EvaluationResult<RepositoryMappingValue> result = eval(skyKey);
 
@@ -204,10 +204,10 @@
         .isEqualTo(
             withMapping(
                 ImmutableMap.of(
-                    RepositoryName.create("B"),
-                    RepositoryName.create("B.1.0"),
-                    RepositoryName.create("A"),
-                    RepositoryName.create("")),
+                    RepositoryName.create("@B"),
+                    RepositoryName.create("@B.1.0"),
+                    RepositoryName.create("@A"),
+                    RepositoryName.create("@")),
                 name));
   }
 
@@ -235,14 +235,14 @@
         .isEqualTo(
             withMappingForRootModule(
                 ImmutableMap.of(
-                    RepositoryName.create(""),
-                    RepositoryName.create(""),
-                    RepositoryName.create("A"),
-                    RepositoryName.create(""),
-                    RepositoryName.create("B1"),
-                    RepositoryName.create("B.1.0"),
-                    RepositoryName.create("B2"),
-                    RepositoryName.create("B.2.0")),
+                    RepositoryName.create("@"),
+                    RepositoryName.create("@"),
+                    RepositoryName.create("@A"),
+                    RepositoryName.create("@"),
+                    RepositoryName.create("@B1"),
+                    RepositoryName.create("@B.1.0"),
+                    RepositoryName.create("@B2"),
+                    RepositoryName.create("@B.2.0")),
                 name));
   }
 
@@ -264,7 +264,7 @@
         .addModule(createModuleKey("D", "1.0"), "module(name='D', version='1.0')")
         .addModule(createModuleKey("D", "2.0"), "module(name='D', version='2.0')");
 
-    RepositoryName name = RepositoryName.create("B.1.0");
+    RepositoryName name = RepositoryName.create("@B.1.0");
     SkyKey skyKey = RepositoryMappingValue.key(name);
     EvaluationResult<RepositoryMappingValue> result = eval(skyKey);
 
@@ -276,8 +276,8 @@
         .isEqualTo(
             withMapping(
                 ImmutableMap.of(
-                    RepositoryName.create("B"), RepositoryName.create("B.1.0"),
-                    RepositoryName.create("D"), RepositoryName.create("D.1.0")),
+                    RepositoryName.create("@B"), RepositoryName.create("@B.1.0"),
+                    RepositoryName.create("@D"), RepositoryName.create("@D.1.0")),
                 name));
   }
 
@@ -297,7 +297,7 @@
         .addModule(createModuleKey("B", "2.0"), "module(name='B', version='2.0')")
         .addModule(createModuleKey("C", "1.0"), "module(name='C', version='1.0')");
 
-    RepositoryName name = RepositoryName.create("B.1.0");
+    RepositoryName name = RepositoryName.create("@B.1.0");
     SkyKey skyKey = RepositoryMappingValue.key(name);
     EvaluationResult<RepositoryMappingValue> result = eval(skyKey);
 
@@ -309,8 +309,8 @@
         .isEqualTo(
             withMapping(
                 ImmutableMap.of(
-                    RepositoryName.create("B"), RepositoryName.create("B.1.0"),
-                    RepositoryName.create("com_foo_bar_c"), RepositoryName.create("C.1.0")),
+                    RepositoryName.create("@B"), RepositoryName.create("@B.1.0"),
+                    RepositoryName.create("@com_foo_bar_c"), RepositoryName.create("@C.1.0")),
                 name));
   }
 
@@ -329,9 +329,9 @@
         "    path = '/other_remote_repo',",
         "    repo_mapping = {'@x' : '@y'},",
         ")");
-    RepositoryName name1 = RepositoryName.create("a_remote_repo");
+    RepositoryName name1 = RepositoryName.create("@a_remote_repo");
     SkyKey skyKey1 = RepositoryMappingValue.key(name1);
-    RepositoryName name2 = RepositoryName.create("other_remote_repo");
+    RepositoryName name2 = RepositoryName.create("@other_remote_repo");
     SkyKey skyKey2 = RepositoryMappingValue.key(name2);
 
     assertThatEvaluationResult(eval(skyKey1))
@@ -339,19 +339,19 @@
         .isEqualTo(
             withMappingAllowingFallback(
                 ImmutableMap.of(
-                    RepositoryName.create("a"),
-                    RepositoryName.create("b"),
-                    RepositoryName.create("good"),
-                    RepositoryName.create(""))));
+                    RepositoryName.create("@a"),
+                    RepositoryName.create("@b"),
+                    RepositoryName.create("@good"),
+                    RepositoryName.create("@"))));
     assertThatEvaluationResult(eval(skyKey2))
         .hasEntryThat(skyKey2)
         .isEqualTo(
             withMappingAllowingFallback(
                 ImmutableMap.of(
-                    RepositoryName.create("x"),
-                    RepositoryName.create("y"),
-                    RepositoryName.create("good"),
-                    RepositoryName.create(""))));
+                    RepositoryName.create("@x"),
+                    RepositoryName.create("@y"),
+                    RepositoryName.create("@good"),
+                    RepositoryName.create("@"))));
   }
 
   @Test
@@ -364,7 +364,7 @@
         "    path = '/a_remote_repo',",
         "    repo_mapping = {'@a' : '@b', '@x' : '@y'},",
         ")");
-    RepositoryName name = RepositoryName.create("a_remote_repo");
+    RepositoryName name = RepositoryName.create("@a_remote_repo");
     SkyKey skyKey = RepositoryMappingValue.key(name);
 
     assertThatEvaluationResult(eval(skyKey))
@@ -372,12 +372,12 @@
         .isEqualTo(
             withMappingAllowingFallback(
                 ImmutableMap.of(
-                    RepositoryName.create("a"),
-                    RepositoryName.create("b"),
-                    RepositoryName.create("x"),
-                    RepositoryName.create("y"),
-                    RepositoryName.create("good"),
-                    RepositoryName.create(""))));
+                    RepositoryName.create("@a"),
+                    RepositoryName.create("@b"),
+                    RepositoryName.create("@x"),
+                    RepositoryName.create("@y"),
+                    RepositoryName.create("@good"),
+                    RepositoryName.create("@"))));
   }
 
   @Test
@@ -411,25 +411,25 @@
         .addModule(createModuleKey("D", "1.0"), "module(name='D', version='1.0')")
         .addModule(createModuleKey("D", "2.0"), "module(name='D', version='2.0')");
 
-    RepositoryName name = RepositoryName.create("ws_repo");
+    RepositoryName name = RepositoryName.create("@ws_repo");
     SkyKey skyKey = RepositoryMappingValue.key(name);
     assertThatEvaluationResult(eval(skyKey))
         .hasEntryThat(skyKey)
         .isEqualTo(
             withMappingAllowingFallback(
                 ImmutableMap.<RepositoryName, RepositoryName>builder()
-                    .put(RepositoryName.create("root"), RepositoryName.MAIN)
+                    .put(RepositoryName.create("@root"), RepositoryName.MAIN)
                     // mappings to @B get remapped to @B.1.0 because of module B@1.0
-                    .put(RepositoryName.create("B_alias"), RepositoryName.create("B.1.0"))
-                    .put(RepositoryName.create("B_alias2"), RepositoryName.create("B.1.0"))
+                    .put(RepositoryName.create("@B_alias"), RepositoryName.create("@B.1.0"))
+                    .put(RepositoryName.create("@B_alias2"), RepositoryName.create("@B.1.0"))
                     // mapping from @B to @B.1.0 is also created
-                    .put(RepositoryName.create("B"), RepositoryName.create("B.1.0"))
+                    .put(RepositoryName.create("@B"), RepositoryName.create("@B.1.0"))
                     // mapping from @C to @C.2.0 is created despite not being mentioned
-                    .put(RepositoryName.create("C"), RepositoryName.create("C.2.0"))
+                    .put(RepositoryName.create("@C"), RepositoryName.create("@C.2.0"))
                     // mapping to @D is untouched because D has a multiple-version override
-                    .put(RepositoryName.create("D_alias"), RepositoryName.create("D"))
+                    .put(RepositoryName.create("@D_alias"), RepositoryName.create("@D"))
                     // mapping to @E is untouched because E is not a module
-                    .put(RepositoryName.create("E_alias"), RepositoryName.create("E"))
+                    .put(RepositoryName.create("@E_alias"), RepositoryName.create("@E"))
                     .build()));
   }
 
@@ -444,14 +444,14 @@
         "    path = '/a_remote_repo',",
         "    repo_mapping = {'x' : '@b'},",
         ")");
-    RepositoryName name = RepositoryName.create("a_remote_repo");
+    RepositoryName name = RepositoryName.create("@a_remote_repo");
     SkyKey skyKey = RepositoryMappingValue.key(name);
 
     assertThatEvaluationResult(eval(skyKey))
         .hasErrorEntryForKeyThat(skyKey)
         .hasExceptionThat()
         .isInstanceOf(NoSuchPackageException.class);
-    assertContainsEvent("invalid repository name 'x': repo names must start with '@'");
+    assertContainsEvent("invalid repository name 'x': workspace names must start with '@'");
   }
 
   @Test
@@ -463,7 +463,7 @@
         "    path = '/a_remote_repo',",
         "    repo_mapping = {},",
         ")");
-    RepositoryName name = RepositoryName.create("a_remote_repo");
+    RepositoryName name = RepositoryName.create("@a_remote_repo");
     SkyKey skyKey = RepositoryMappingValue.key(name);
 
     assertThatEvaluationResult(eval(skyKey))
@@ -471,7 +471,7 @@
         .isEqualTo(
             withMappingAllowingFallback(
                 ImmutableMap.of(
-                    RepositoryName.createUnvalidated(TestConstants.WORKSPACE_NAME),
+                    RepositoryName.createFromValidStrippedName(TestConstants.WORKSPACE_NAME),
                     RepositoryName.MAIN)));
   }
 
@@ -484,14 +484,14 @@
         "    name = 'a_remote_repo',",
         "    path = '/a_remote_repo',",
         ")");
-    RepositoryName name = RepositoryName.create("a_remote_repo");
+    RepositoryName name = RepositoryName.create("@a_remote_repo");
     SkyKey skyKey = RepositoryMappingValue.key(name);
 
     assertThatEvaluationResult(eval(skyKey))
         .hasEntryThat(skyKey)
         .isEqualTo(
             withMappingAllowingFallback(
-                ImmutableMap.of(RepositoryName.create("good"), RepositoryName.MAIN)));
+                ImmutableMap.of(RepositoryName.create("@good"), RepositoryName.MAIN)));
   }
 
   @Test
@@ -499,14 +499,14 @@
     new EqualsTester()
         .addEqualityGroup(
             withMappingAllowingFallback(
-                ImmutableMap.of(RepositoryName.create("foo"), RepositoryName.create("bar"))),
+                ImmutableMap.of(RepositoryName.create("@foo"), RepositoryName.create("@bar"))),
             withMappingAllowingFallback(
-                ImmutableMap.of(RepositoryName.create("foo"), RepositoryName.create("bar"))))
+                ImmutableMap.of(RepositoryName.create("@foo"), RepositoryName.create("@bar"))))
         .addEqualityGroup(
             withMappingAllowingFallback(
-                ImmutableMap.of(RepositoryName.create("fizz"), RepositoryName.create("buzz"))),
+                ImmutableMap.of(RepositoryName.create("@fizz"), RepositoryName.create("@buzz"))),
             withMappingAllowingFallback(
-                ImmutableMap.of(RepositoryName.create("fizz"), RepositoryName.create("buzz"))))
+                ImmutableMap.of(RepositoryName.create("@fizz"), RepositoryName.create("@buzz"))))
         .testEquals();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
index 95a1acc..0cd0436 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java
@@ -178,12 +178,12 @@
             "local_repository(name = 'a', path = '../a', repo_mapping = {'@x' : '@y'})",
             "load('//:b.bzl', 'b')",
             "local_repository(name = 'b', path = '../b', repo_mapping = {'@x' : '@y'})");
-    RepositoryName a = RepositoryName.create("a");
-    RepositoryName b = RepositoryName.create("b");
-    RepositoryName x = RepositoryName.create("x");
-    RepositoryName y = RepositoryName.create("y");
-    RepositoryName good = RepositoryName.create("good");
-    RepositoryName main = RepositoryName.create("");
+    RepositoryName a = RepositoryName.create("@a");
+    RepositoryName b = RepositoryName.create("@b");
+    RepositoryName x = RepositoryName.create("@x");
+    RepositoryName y = RepositoryName.create("@y");
+    RepositoryName good = RepositoryName.create("@good");
+    RepositoryName main = RepositoryName.create("@");
 
     SkyKey key0 = WorkspaceFileValue.key(workspace, 0);
     EvaluationResult<WorkspaceFileValue> result0 = eval(key0);
@@ -205,9 +205,9 @@
       TestManagedDirectoriesListener listener = new TestManagedDirectoriesListener();
       ManagedDirectoriesKnowledgeImpl knowledge = new ManagedDirectoriesKnowledgeImpl(listener);
 
-      RepositoryName one = RepositoryName.create("repo1");
-      RepositoryName two = RepositoryName.create("repo2");
-      RepositoryName three = RepositoryName.create("repo3");
+      RepositoryName one = RepositoryName.create("@repo1");
+      RepositoryName two = RepositoryName.create("@repo2");
+      RepositoryName three = RepositoryName.create("@repo3");
 
       PathFragment pf1 = PathFragment.create("dir1");
       PathFragment pf2 = PathFragment.create("dir2");
@@ -316,9 +316,9 @@
     assertThat(managedDirectories).hasSize(3);
     assertThat(managedDirectories)
         .containsExactly(
-            PathFragment.create("dir1"), RepositoryName.create("repo1"),
-            PathFragment.create("dir2"), RepositoryName.create("repo1"),
-            PathFragment.create("dir3"), RepositoryName.create("repo2"));
+            PathFragment.create("dir1"), RepositoryName.create("@repo1"),
+            PathFragment.create("dir2"), RepositoryName.create("@repo1"),
+            PathFragment.create("dir3"), RepositoryName.create("@repo2"));
     return workspaceFileValue;
   }
 
@@ -556,9 +556,9 @@
     SkyKey key1 = WorkspaceFileValue.key(workspace, 1);
     EvaluationResult<WorkspaceFileValue> result1 = eval(key1);
     WorkspaceFileValue value1 = result1.get(key1);
-    RepositoryName good = RepositoryName.create("good");
-    RepositoryName main = RepositoryName.create("");
-    RepositoryName secondary = RepositoryName.create("secondary");
+    RepositoryName good = RepositoryName.create("@good");
+    RepositoryName main = RepositoryName.create("@");
+    RepositoryName secondary = RepositoryName.create("@secondary");
     assertThat(value1.getRepositoryMapping()).containsEntry(secondary, ImmutableMap.of(good, main));
     assertNoEvents();
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
index 1059d30..588f523 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
@@ -56,7 +56,7 @@
     embeddedBinaries.createDirectoryAndParents();
 
     mockEmbeddedTools(embeddedBinaries);
-    fetchExternalRepo(RepositoryName.create("bazel_tools"));
+    fetchExternalRepo(RepositoryName.create("@bazel_tools"));
   }
 
   private static void mockEmbeddedTools(Path embeddedBinaries) throws IOException {
@@ -132,7 +132,7 @@
     file("WORKSPACE", "local_repository(name = 'r', path='r')");
     file("r/WORKSPACE", "workspace(name = 'r')");
     file("r/good/BUILD", "sh_library(name = 'good')");
-    RepositoryName rRepoName = RepositoryName.create("r");
+    RepositoryName rRepoName = RepositoryName.create("@r");
     fetchExternalRepo(rRepoName);
 
     PackageIdentifier pkgId = PackageIdentifier.create(rRepoName, PathFragment.create("good"));
@@ -153,7 +153,7 @@
         "new_local_repository(name = 'r', path = '/r', "
             + "build_file_content = 'sh_library(name = \"good\")')");
     fs.getPath("/r").createDirectoryAndParents();
-    RepositoryName rRepoName = RepositoryName.create("r");
+    RepositoryName rRepoName = RepositoryName.create("@r");
     fetchExternalRepo(rRepoName);
 
     PackageIdentifier pkgId =
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodecTest.java
index 71e4e81..72bf2fe 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodecTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodecTest.java
@@ -27,7 +27,7 @@
 
   @Test
   public void testCodec() throws Exception {
-    new SerializationTester(PackageIdentifier.create("foo", PathFragment.create("bar/baz")))
+    new SerializationTester(PackageIdentifier.create("@foo", PathFragment.create("bar/baz")))
         .runTests();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java
index 06588d6..aeaeeda 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java
@@ -27,7 +27,7 @@
   public void testCodec() throws Exception {
     new SerializationTester(
             RepositoryName.create(RepositoryName.MAIN.getName()),
-            RepositoryName.create("externalandshouldntexistinthisworkspace"))
+            RepositoryName.create("@externalandshouldntexistinthisworkspace"))
         .runTests();
   }
 }