Index: trunk/resources/data/validator/combinations.mapcss
===================================================================
--- trunk/resources/data/validator/combinations.mapcss	(revision 19453)
+++ trunk/resources/data/validator/combinations.mapcss	(revision 19467)
@@ -307,4 +307,6 @@
 node[power=transformer][voltage],
 node[transformer=distribution][voltage][power=pole],
+relation[power=circuit][wires],
+relation[power=line_section][wires],
 *[amenity=vending_machine][shop],
 *[noname?][name],
@@ -1138,2 +1140,20 @@
   assertNoMatch: "way highway=primary oneway=yes bicycle:lanes=no|designated|yes cycleway:lanes=|lane|no";
 }
+
+/* Prevent redundancy between relation and members, see #24456, #24457 */
+relation[power=circuit] > way[power=line][frequency],
+relation[power=circuit] > way[power=minor_line][frequency],
+relation[power=circuit] > way[power=cable][frequency] {
+  throwWarning: tr("Frequency tag should be on the circuit relation only, not on the power segment");
+  group: tr("redundant tagging");
+}
+relation[power=circuit] > relation[power=line_section][frequency] {  
+  throwWarning: tr("Frequency tag should be on the circuit relation only, not on the power section");
+  group: tr("redundant tagging");
+}
+
+/* Invalid topology with power circuit relation, see #24456 */
+relation[power=circuit][topology][topology!~/^(linear|branched)$/] {
+       throwError: tr("power=circuit relations should have a topology tag with value linear or branched");
+       assertMatch: "relation type=power power=circuit topology=branch";
+       assertNoMatch: "relation type=power power=circuit topology=branched";
Index: trunk/resources/data/validator/deprecated.mapcss
===================================================================
--- trunk/resources/data/validator/deprecated.mapcss	(revision 19453)
+++ trunk/resources/data/validator/deprecated.mapcss	(revision 19467)
@@ -2584,3 +2584,15 @@
 }
 
+/* route=power is deprecated, see #24456 */
+relation[route=power] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  group: tr("deprecated tagging");
+  suggestAlternative: "type=power + power=circuit";
+}
+relation[power=branch] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  group: tr("deprecated tagging");
+  suggestAlternative: "type=power + power=line_section";
+}
+
 /* When tags are deprecated they should be added to ignoretags.cfg too. */
Index: trunk/resources/data/validator/geometry.mapcss
===================================================================
--- trunk/resources/data/validator/geometry.mapcss	(revision 19453)
+++ trunk/resources/data/validator/geometry.mapcss	(revision 19467)
@@ -91,5 +91,7 @@
 node[interval],
 node[route],
-node[restriction] {
+node[restriction],
+node[power=circuit],
+node[power=line_section] {
   throwError: tr("{0} on a node. Should be used in a relation", "{0.tag}"); 
 }
@@ -140,10 +142,14 @@
 way[type=multipolygon],
 way[interval][route!=ferry],
-way[route=bus] {
+way[route=bus],
+way[power=circuit],
+way[power=line_section] {
   throwError: tr("{0} on a way. Should be used in a relation", "{0.tag}"); 
 }
 
 /* {0} on a closed way, should be a unclosed way; #19981 */
-way:closed[power=line] {
+way:closed[power=line],
+way:closed[power=cable],
+way:closed[power=minor_line] {
   throwWarning: tr("{0} on a closed way. Should be used on an unclosed way.", "{1.tag}"); 
 }
Index: trunk/resources/data/validator/ignoretags.cfg
===================================================================
--- trunk/resources/data/validator/ignoretags.cfg	(revision 19453)
+++ trunk/resources/data/validator/ignoretags.cfg	(revision 19467)
@@ -826,4 +826,6 @@
 ; This seems to be a region specific tag.
 K:valley=balka
+K:route=power
+K:power=branch
 
 ; These tags should probably have better software support, but maybe they can be in the appropriate section in this file.
Index: trunk/resources/data/validator/relation.mapcss
===================================================================
--- trunk/resources/data/validator/relation.mapcss	(revision 19453)
+++ trunk/resources/data/validator/relation.mapcss	(revision 19467)
@@ -72,2 +72,11 @@
   group: tr("suspicious tag combination");
 }
+
+/* Power relations, #24456 */
+relation[type=power][!power],
+relation[type=power][power][power!~/^(circuit|line_section)$/] {
+       throwError: tr("Power relation misses or combined to wrong power=* value");
+       assertMatch: "relation type=power";
+  assertMatch: "relation type=power power=line";
+       assertNoMatch: "relation type=power power=circuit";
+}
