Index: trunk/data/tagchecker.cfg
===================================================================
--- trunk/data/tagchecker.cfg	(revision 6383)
+++ trunk/data/tagchecker.cfg	(revision 6384)
@@ -91,4 +91,11 @@
 relation : W : type == route_master && route_master != *       # route_master relation without route_master=*
 
+# power related stuff (incomplete)
+*    : W : power == /line|minor_line|cable/ && voltage != *    # power line without voltage
+*    : W : substation == * && power != substation              # substation key without power=substation
+*    : W : transformer == * && power != *                      # transformer key without power
+*    : I : power == substation && substation != *              # missing substation=*
+*    : I : power == transformer && transformer != *            # missing transformer=*
+
 ########################################
 # Rules derived from Taginfo statistics
@@ -101,5 +108,5 @@
 *    : W : lanes                == * && highway != *                                   # lanes without highway
 *    : W : lcn                  == * && highway != *                                   # lcn without highway
-*    : W : lit                  == * && highway != * && amenity != /parking.*/ && public_transport != platform   # lit without highway/parking/platform
+*    : W : lit                  == * && highway != * && railway != * && piste:type != * && amenity != /parking.*/ && public_transport != platform   # lit without highway/railway/piste/parking/platform
 *    : W : living_street        == * && highway != *                                   # living_street without highway
 *    : W : maintenance          == * && highway != *                                   # maintenance without highway
@@ -146,9 +153,9 @@
 *    : W : canal                == * && waterway != *                                  # canal without waterway
 *    : W : have_riverbank       == * && waterway != *                                  # have_riverbank without waterway
-*    : W : tunnel               == * && highway != * && railway != * && waterway != *  # tunnel without highway/railway/waterway
-*    : W : bridge               == * && highway != * && railway != * && waterway != * && piste:type != * # bridge without highway/railway/waterway/piste
-*    : W : psv                  == * && highway != * && railway != * && waterway != *  # psv without highway/railway/waterway
-*    : W : width                == * && highway != * && railway != * && waterway != * && aeroway != * && cycleway != * && footway != * && barrier != * && man_made != * && entrance != * # width without physical linear feature
-*    : W : maxspeed             == * && highway != * && railway != * && traffic_sign != /(.*;)?maxspeed(;.*)?/ && type != enforcement # maxspeed without highway/railway/traffic_sign
+*    : W : tunnel               == * && highway != * && railway != * && waterway != * && public_transport != platform && man_made != pipeline  # tunnel without highway/railway/waterway/platform/pipeline
+*    : W : bridge               == * && highway != * && railway != * && waterway != * && piste:type != * && public_transport != platform && man_made != /bridge|pipeline/ && building != bridge  # bridge without highway/railway/waterway/platform/piste/pipeline
+*    : W : psv                  == * && highway != * && railway != * && waterway != * && amenity != /parking.*/  # psv without highway/railway/waterway/parking
+*    : W : width                == * && highway != * && railway != * && waterway != * && aeroway != * && cycleway != * && footway != * && barrier != * && man_made != * && entrance != *  # width without physical linear feature
+*    : W : maxspeed             == * && highway != * && railway != * && traffic_sign != /(.*;)?maxspeed(;.*)?/ && type != enforcement  # maxspeed without highway/railway/traffic_sign/enforcement
 *    : W : fence_type           == * && barrier != fence                               # fence_type without barrier=fence
 *    : W : border_type          == * && boundary != *                                  # border_type without boundary
@@ -157,5 +164,4 @@
 *    : W : shelter_type         == * && amenity != shelter                             # shelter_type without amenity=shelter
 *    : W : lamp_type            == * && highway != street_lamp                         # lamp_type without highway=street_lamp
-*    : W : building_type        == * && building != *                                  # building_type without building
 *    : W : map_type             == * && information != map                             # map_type without information=map
 *    : W : site_type            == * && historic != archaeological_site                # site_type without historic=archaeological_site
@@ -164,5 +170,4 @@
 *    : W : reservoir_type       == * && landuse != reservoir && water != reservoir     # reservoir_type without landuse/water=reservoir
 *    : W : bunker_type          == * && military != bunker                             # bunker_type without military=bunker
-*    : W : power == /line|minor_line|cable/ && voltage != *                            # power line without voltage
 
 ################################
@@ -186,16 +191,16 @@
 
 # measurement values and units warnings (ticket #8687)
-way : W : layer == * && layer != /^0$|^-?[1-5]$/  # layer should be between -5 and 5
+way : W : layer == * && layer != /^0$|^-?[1-5]$/                                                                         # layer should be between -5 and 5
 *   : W : level == * && level != /^((([0-9]|-[1-9])|[1-9][0-9]*)(\.5)?)(;(([0-9]|-[1-9])|[1-9][0-9]*)(\.5)?)*$|^-0\.5$/  # level should be numbers with optional .5 increments
-*   : W : height == * && height != /^(([0-9]+\.?[0-9]*( m)?)|([1-9][0-9]*\'((10|11|[0-9])((\.[0-9]+)?)\")?))$/  # meters is default; period is separator; if units, put space then unit
-
-*   : W : maxheight == * && maxheight != /^(([1-9][0-9]*(\.[0-9]+)?( m)?)|([0-9]+\'([0-9]|10|11)(\.[0-9]*)?\"))$/  # meters is default; period is separator; if units, put space then unit
-way : W : width == * && width != /^(([0-9]+\.?[0-9]*( [a-z]+)?)|([0-9]+\'[0-9]+\.?[0-9]*\"))$/  # meters is default; period is separator; if units, put space then unit
-*   : W : maxwidth == * && maxwidth != /^(([0-9]+\.?[0-9]*( m)?)|([0-9]+\'[0-9]+\.?[0-9]*\"))$/  # meters is default; period is separator; if units, put space then unit
+*   : W : height == * && height != /^(([0-9]+\.?[0-9]*( m)?)|([1-9][0-9]*\'((10|11|[0-9])((\.[0-9]+)?)\")?))$/           # height: meters is default; period is separator; if units, put space then unit
+
+*   : W : maxheight == * && maxheight != /^(([1-9][0-9]*(\.[0-9]+)?( m)?)|([0-9]+\'([0-9]|10|11)(\.[0-9]*)?\"))$/        # maxheight: meters is default; period is separator; if units, put space then unit
+way : W : width == * && width != /^(([0-9]+\.?[0-9]*( [a-z]+)?)|([0-9]+\'[0-9]+\.?[0-9]*\"))$/                           # width: meters is default; period is separator; if units, put space then unit
+*   : W : maxwidth == * && maxwidth != /^(([0-9]+\.?[0-9]*( m)?)|([0-9]+\'[0-9]+\.?[0-9]*\"))$/                          # maxwidth: meters is default; period is separator; if units, put space then unit
 way : W : maxspeed == * && maxspeed != /^(signals|none|unposted|unknown|variable|walk|[1-9][0-9]*( [a-z]+)?|[A-Z][A-Z]:(urban|rural|living_street|motorway))$/  # unusual maxspeed format
-way : W : voltage == * && voltage == /(.*[A-Za-z].*)|.*,.*|.*( ).*/  # voltage should be in volts with no units/delimiter/spaces
+way : W : voltage == * && voltage == /(.*[A-Za-z].*)|.*,.*|.*( ).*/                                                      # voltage should be in volts with no units/delimiter/spaces
 # some users are using frequency for other purposes (not electromagnetic) with the values 'perennial' and 'intermittent'; the vast majority are 0, 16.7, 50 and 60
-way : W : frequency == * && frequency != /^(0|[1-9][0-9]*(\.[0-9]+)?)( (kHz|MHz|GHz|THz))?$/  # unusual frequency specification
-way : W : gauge == * && gauge != /^([1-9][0-9]{1,3}(;[1-9][0-9]{1,3})*|broad|standard|narrow)$/  # unusual train track gauge; use mm with no separator
+way : W : frequency == * && frequency != /^(0|[1-9][0-9]*(\.[0-9]+)?)( (kHz|MHz|GHz|THz))?$/                             # unusual frequency specification
+way : W : gauge == * && gauge != /^([1-9][0-9]{1,3}(;[1-9][0-9]{1,3})*|broad|standard|narrow)$/                          # unusual train track gauge; use mm with no separator
 # the numbers for percentage and degrees include could probably be bracketed a bit more precisely
-way : W : incline == * && incline != /^(up|down|-?([0-9]+?(\.[1-9]%)?|100)[%°]?)$/  # unusual incline; use percentages/degrees or up/down
+way : W : incline == * && incline != /^(up|down|-?([0-9]+?(\.[1-9]%)?|100)[%°]?)$/                                       # unusual incline; use percentages/degrees or up/down
