Index: resources/data/validator/combinations.mapcss
===================================================================
--- resources/data/validator/combinations.mapcss	(revision 18231)
+++ resources/data/validator/combinations.mapcss	(working copy)
@@ -158,9 +158,11 @@
   group: tr("missing tag");
 }
 
-/* {0.tag} without {1.key} (warning level), #18411, #18246, #20530 */
-way[railway=construction][!construction],
-way[highway=construction][!construction],
+/* {0.tag} without {1.key} (warning level), #18411, #18246, #20530, #20960 */
+way[railway=construction][!construction][!construction:railway],
+way[highway=construction][!construction][!construction:highway],
+area[building=construction][!construction][!construction:building],
+area[landuse=construction][!construction][!construction:landuse],
 node[traffic_sign=maxspeed][!maxspeed][!/^maxspeed:.+/],
 *[actuator=manual][!handle],
 *[mechanical_driver=manual][!handle],
@@ -307,10 +309,12 @@
   group: tr("suspicious tag combination");
 }
 
-/* {0.tag} together with {1.tag}, see #18411, #17950, #17330, #17623, #17592, #17594, #17542, #16861, #16147, #10186, #18815 */
+/* {0.tag} together with {1.tag}, see #18411, #17950, #17330, #17623, #17592, #17594, #17542, #16861, #16147, #10186, #18815, #20960 */
 *[barrier=kerb][kerb=no],
-way[highway=construction][construction=yes],
-way[railway=construction][construction=yes],
+way[highway=construction][construction][construction=~/^(yes|minor|no)$/],
+way[railway=construction][construction][construction=~/^(yes|minor|no)$/],
+area[building=construction][construction][construction=~/^(yes|minor|no)$/],
+area[landuse=construction][construction][construction=~/^(yes|minor|no)$/],
 *[man_made=bridge][bridge=yes],
 *[man_made=tunnel][tunnel=yes],
 *[amenity=police][police],
@@ -523,7 +527,9 @@
     assertNoMatch: "node sport=10pin amenity=restaurant";
 }
 
-/* {0.key} without {1.key} or {2.key} see #10140 */
+/* {0.key} without {1.key} or {2.key} see #10140, #20960 */
+way[construction][!highway][!railway]!:closed,
+area[construction][!building][!landuse]:closed,
 *[building:levels][!building][!building:part],
 way[usage][!railway][!waterway][route!=railway][man_made!=pipeline] {
   throwWarning: tr("{0} without {1} or {2}", "{0.key}", "{1.key}", "{2.key}");
@@ -837,9 +843,12 @@
   assertNoMatch: "way construction:building=house construction=house";
 }
 
-/* #18203 */
-way[construction][construction!=yes][construction!=minor][highway][highway!=construction] {
-  throwWarning: tr("{0} together with {1}", "{3.tag}", "{0.tag}");
+/* #18203, #20960 */
+way[construction][construction!~/^(yes|minor|no)$/][highway][highway!=construction],
+way[construction][construction!~/^(yes|minor|no)$/][railway][railway!=construction],
+area[construction][construction!~/^(yes|minor|no)$/][building][building!=construction],
+area[construction][construction!~/^(yes|minor|no)$/][landuse][landuse!=construction] {
+  throwWarning: tr("{0} together with {1}", "{2.tag}", "{0.tag}");
   group: tr("suspicious tag combination");
 }
 
