Index: trunk/data/validator/combinations.mapcss
===================================================================
--- trunk/data/validator/combinations.mapcss	(revision 15267)
+++ trunk/data/validator/combinations.mapcss	(revision 15268)
@@ -2,4 +2,8 @@
  * Taginfo query: select keypairs.key1, keypairs.key2, keypairs.count_all, keys.count_all, cast(keypairs.count_all as real)/keys.count_all as from_fraction_all from keys, keypairs where key1='waterway' and keys.key=keypairs.key2 and (key1<>'highway' or keypairs.count_all>12000) and (key1<>'railway' or keypairs.count_all>3000) and (key1<>'waterway' or keypairs.count_all>800) and key2 not like '%:%' and from_fraction_all>0.97 and 1 union select keypairs.key2, keypairs.key1, keypairs.count_all, keys.count_all, cast(keypairs.count_all as real)/keys.count_all as from_fraction_all from keys, keypairs where key2='waterway' and keys.key=keypairs.key1 and (key2<>'highway' or keypairs.count_all>12000) and (key2<>'railway' or keypairs.count_all>3000) and (key2<>'waterway' or keypairs.count_all>800) and key1 not like '%:%' and from_fraction_all>0.97 and 1 order by keypairs.count_all desc limit 1000;
  */
+
+way[surface=~/^(unpaved|compacted|gravel|fine_gravel|pebblestone|ground|earth|dirt|grass|sand|mud|ice|salt|snow|woodchips)$/] { /* without grass_paver as it is controversial */
+  set unpaved_surface;
+}
 
 /* {0.key} without {1.key} (warning level) */
@@ -257,5 +261,5 @@
 /* {0.tag} together with {1.tag}, see #17623, #17592, #17594, #17542, #16861, #16147, #10186 */
 way[junction=yes][highway],
-way[tracktype=grade1][surface][surface=~/^(unpaved|compacted|gravel|fine_gravel|pebblestone|ground|earth|dirt|grass|sand|mud|ice|salt|snow|woodchips)$/],
+way[tracktype=grade1][surface].unpaved_surface,
 way[tracktype=grade2][surface][surface=~/^(sand|mud)$/],
 way[segregated][bicycle=no],
@@ -603,2 +607,10 @@
   fixRemove: "cycleway";
 }
+
+/* #17973 */
+way[highway=path    ][foot][foot!=no      ][!segregated][bicycle][bicycle!=no]!.unpaved_surface,
+way[highway=footway ][bicycle][bicycle!=no][!segregated]!.unpaved_surface,
+way[highway=cycleway][foot][foot!=no      ][!segregated]!.unpaved_surface {
+  throwWarning: tr("Combined foot- and cycleway without {1}.", "{3.key}");
+  group: tr("missing tag");
+}
