Index: trunk/resources/data/validator/combinations.mapcss
===================================================================
--- trunk/resources/data/validator/combinations.mapcss	(revision 17050)
+++ trunk/resources/data/validator/combinations.mapcss	(revision 17051)
@@ -834,2 +834,22 @@
   group: tr("suspicious tag combination");
 }
+
+/* #19603 */
+way[footway][highway][footway=sidewalk ][highway!~/^(path|footway|cycleway|construction|proposed)$/] {
+  throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
+  group: tr("suspicious tag combination");
+  suggestAlternative: "sidewalk=left";
+  suggestAlternative: "sidewalk=right";
+  suggestAlternative: "sidewalk=both";
+  suggestAlternative: "sidewalk=separate";
+}
+way[footway][highway][footway!=sidewalk][highway!~/^(path|footway|cycleway|construction|proposed)$/] {
+  throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
+  group: tr("suspicious tag combination");
+}
+way[footway][!highway][!/:highway$/],
+way[cycleway][!highway][!/:highway$/] {
+  throwWarning: tr("{0} without {1}", "{0.key}", "{1.key}");
+  group: tr("missing tag");
+  assertNoMatch: "way footway=sidewalk abandoned:highway=unclassified";
+}
