diff --git a/lib/Paths.hs b/lib/Paths.hs
index b628ee8da450302df67c49498129f190b8dcb408..b849cf612981eb6a1f0c252bafb322ab824260d7 100644
--- a/lib/Paths.hs
+++ b/lib/Paths.hs
@@ -60,3 +60,11 @@ normalise prefix (Path i path _) =
 normaliseWithFrag :: FilePath -> RelPath -> FilePath
 normaliseWithFrag prefix (Path i path frag) =
   normalise prefix (Path (i+1) path frag) <> T.unpack (maybe mempty ("#" <>) frag)
+
+-- | does this path contain an old-style pattern for inter-repository
+-- links as was used at rc3 in 2020?
+isOldStyle :: RelPath -> Bool
+isOldStyle (Path _ text frag) = path =~ ("{<.+>*}" :: Text)
+  where path = case frag of
+          Just f -> text <> f
+          _ -> text
diff --git a/lib/Properties.hs b/lib/Properties.hs
index b15ea158d372ab90b6adad4b0d9c03825f5c15f7..c278351427d679fdac84079400e9c3b166e958eb 100644
--- a/lib/Properties.hs
+++ b/lib/Properties.hs
@@ -35,7 +35,7 @@ import           LintConfig    (LintConfig (..))
 import           LintWriter    (LintWriter, adjust, askContext, askFileDepth,
                                 complain, dependsOn, forbid, lintConfig,
                                 offersBadge, offersEntrypoint, suggest, warn)
-import           Paths         (PathResult (..), RelPath (..), parsePath)
+import           Paths         (PathResult (..), RelPath (..), parsePath, isOldStyle)
 import           Types         (Dep (Link, Local, LocalMap, MapLink))
 import           Uris          (SubstError (..), applySubst)
 
@@ -323,7 +323,10 @@ checkTileLayerProperty p@(Property name _value) = case name of
       forbidEmptyLayer
       unwrapURI (Proxy @"map") p
         (dependsOn . MapLink)
-        (dependsOn . LocalMap)
+        (\path -> do
+            if isOldStyle path
+              then complain "Old-Style inter-repository links (using {<placeholder>}) cannot be used at rC3 2021; please use world:// instead (cf. howto.rc3.world)."
+              else dependsOn . LocalMap $ path)
     "exitSceneUrl" ->
       deprecatedUseInstead "exitUrl"
     "exitInstance" ->