diff --git a/meta/classes-global/yocto-check-layer.bbclass b/meta/classes-global/yocto-check-layer.bbclass
index ba93085325..11b7f5d2ee 100644
--- a/meta/classes-global/yocto-check-layer.bbclass
+++ b/meta/classes-global/yocto-check-layer.bbclass
@@ -56,7 +56,22 @@ def check_network_flag(d):
         if network and not is_allowed(bpn, task):
             bb.error(f"QA Issue: task {task} has network enabled")
 
+def check_missing_srcrev(d):
+    """
+    Enforce missing-srcrev check as error during yocto-check-layer runs.
+    Uses the shared oe.qa.check_uri_srcrev() helper.
+    """
+    import oe.qa
+    src_uri = (d.getVar('SRC_URI', False) or '').split()
+    pn = d.getVar('PN')
+    for uri in src_uri:
+        rev = oe.qa.check_uri_srcrev(pn, uri, d)
+        if rev is None:
+            bb.error("QA Issue: %s: SRCREV not set for SCM URI %s [missing-srcrev]" % (pn, uri))
+            d.setVar("QA_ERRORS_FOUND", "True")
+
 python () {
     check_insane_skip(d)
     check_network_flag(d)
+    check_missing_srcrev(d)
 }
diff --git a/meta/lib/oe/qa.py b/meta/lib/oe/qa.py
index 0987aaf2c4..3da45e33ce 100644
--- a/meta/lib/oe/qa.py
+++ b/meta/lib/oe/qa.py
@@ -245,7 +245,7 @@ def check_uri_srcrev(pn, uri, d):
     Check that a single SCM URI has a valid SRCREV set.
 
     Returns the resolved revision string if valid (including '${AUTOREV}').
-    Returns '' for non-SCM URIs or URIs with inline rev= parameter (skip).
+    Returns '' for non-SCM URIs or URIs with inline rev= or tag= parameter (skip).
     Returns None if SRCREV is missing or INVALID.
     """
     import bb.fetch2
