﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
22816	Check for check_date:xxxx if tag xxxx is updated (and offer to fix it)	mnalis	team	"[https://wiki.openstreetmap.org/wiki/Key:check_date check_date:xxxx] is often used (for example by apps like StreetComplete or Every Door or others) to mark when some element has been updated.

For example, if `surface=gravel` which was added few year ago is still `surface=gravel` as verified by user on the ground, they might add `check_date:surface=2023-03-14`. Or, if `opening_hours=*` of the shop were confirmed as not have changed since last time element was updated, they'd add `check_date:opening_hours=2023-03-14`. 

That is useful information, as it allows QA ""staleness"" tools (as well as those editors intended for on-the-ground verification of data which check for staleness among other things) to ask only about things which are likely to have changed (and skip those which were recently checked)


----

Now, when JOSM user edits those OSM elements, they might change for example `surface=*` tag, but do not notice nor update `check_data:surface=*` tag. That leads to incorrect data. What would be great addition, IMHO, is if JOSM could check for such cases.

* In most bare application, on upload JOSM could check if any modified element has `check_date` or `check_date:*` tags, and warn about it. That would help in itself (as user can ignore those that are vetted), and I guess at least that option is quite easy to add.

* If more advanced way is possible, JOSM should skip said warning if ALL of those `check_date` / `check_date:*` tags were added or updated by current editing session (as it means user has taken them into account and updated them). But I don't know if that is possible (i.e. does JOSM known which tags have changed, and not only which OSM elements have changed?) 

* If even more advanced was is possible, JOSM would ideally warn for each **unmodified** `check_date:xxxx` tag only if `xxxx=*` was **modified**, and offer to fix (by removing `check_date:xxxx`) if users chooses `Fix`. e.g.
 * if there is `check_date:surface=2020-01-01` but `surface=*` wasn't modified, ignore it
 * if both `check_date:surface=2023-03-14` and `surface=*` were modified, ignore it
 * if there is old unmodified `check_date:surface=2020-01-01` tag and `surface=*` was modified, warn and offer to remove `check_date:surface`
 * if any tag has been modified and there is old unmodified `check_date=2020-01-01` tag, warn about `check_date`
 * if any tag has been modified and `check_date=2023-03-14` tag has also been modified,  ignore it

 (of course each element can have multiple `check_date:*` tags, e.g. `check_date:surface`, `check_date:lit` etc.)


(inspired by this forum discussion: https://community.openstreetmap.org/t/streetcomplete-setzt-check-date-surface/96687)"	enhancement	new	normal		Core validator				
