It doesn't really doable to differentiate between what's supposed to be acceptable conflict in a compat mode, and which are not. The current condition at least makes all conflicts illegal outside compat mode.
What should be changed here, is to do full check also in compat mode, if we are in fact loading ruleset of the current freeciv version's format.
sanity_check_ruleset_data() comment about ignore_retired is suspicious: "were retired in Freeciv 3.0."
So is the compat code in question supposed to be in later branches? Sounds like it would allow things that were not legal even in the versions that the compatibility is expected with (3.0 compat in S3_1, 3.1 compat in master)