Vanilla works like this. Say we create a unit. It is then granted a visual range of 1. It gains a promotion, which grants +1 visual range, which gives it a total of 2. When the game is saved it will save the integer 2. On load it will load 2. This means it will not load the xml values on load. The game knows the visual range is 2, but it has no idea why, meaning it can't figure out how to modify to match changed xml values. In short the game saves the cache and has no check if the cache is outdated. I suspect this is to make it faster to code and faster to load vanilla. It's good for the player who doesn't mod the files and doesn't update mods mid game, but it's not good for playing your own mod while updating it or just updating mid game because there just happened to be a new release.
It is possible to mod the DLL to not save data like this and instead calculate on load. It makes the game a lot more xml modding friendly, but it requires a lot of work with the DLL. There are other issues with savegames, which too can be modded, like not being able to load savegames if a new unit is added to xml. We have plans for a major overhaul of the savegame format for WTP, but it will have to wait for quite a while because currently we want to stay savegame compatible with previous releases.
I can't really tell what the issue is with pedia. It should reflect how xml were at the time the game started. Note that vanilla loads some xml files before main menu and some after. Going to main menu and loading the game again will reload some files while some other files require a complete restart of the game.