Index: src/org/openstreetmap/josm/data/validation/TestError.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/TestError.java	(revision 16252)
+++ src/org/openstreetmap/josm/data/validation/TestError.java	(working copy)
@@ -339,7 +339,7 @@
      */
     public String getIgnoreSubGroup() {
         String ignorestring = getIgnoreGroup();
-        if (descriptionEn != null) {
+        if (descriptionEn != null && code != 3000) {
             ignorestring += '_' + descriptionEn;
         }
         return ignorestring;
@@ -351,6 +351,10 @@
      * @see TestError#getIgnoreSubGroup()
      */
     public String getIgnoreGroup() {
+        if (code == 3000) {
+            // see #19053
+            return "3000_" + (description == null ? message : description);
+        }
         return Integer.toString(code);
     }
 
Index: src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 16252)
+++ src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(working copy)
@@ -412,7 +412,10 @@
         if (node != null) {
             final Set<String> codes = new HashSet<>();
             ValidatorTreePanel.visitTestErrors(node, error -> {
-                codes.add(error.getIgnoreSubGroup()); // see #19053
+                if (error.getCode() == 3000) {
+                    // see #19053
+                    codes.add(error.getIgnoreSubGroup());
+                }
                 error.setSelected(true);
 
                 hasFixes.set(hasFixes.get() || error.isFixable());
