I didn't mean they would always be invalidated, just that it could happen e.g. for a subset of tags. For some of the languages the mappings aren't very nice from what I have seen, we might want to introduce new mapping types to semantically better represent the feature of the given language and such a change could make the corresponding tag invalid (this is nothing new, it's how it always worked before).
We could do these things: 1. Store the ctags kind letter to the tagmanager-format tag files and use it instead of the mapped type if present (we could still fall back to the mapped type for legacy files). For this we could use some of the obsolete and unused entries in the tag files like `TA_TIME` here: https://github.com/geany/geany/blob/37d20a823fb1bca67cea57ef73aa9e64009d8138... Such updated tag files would be compatible across Geany releases. 2. Use the ctags file format for the tag files we ship with Geany (or for those, where it matters - the pipe-separated `pas` files and HTML entities without any kind specified are fine). 3. Or both.