Ah, got it. Misunderstood.
Your second paragraph is very accurate - there's a lot of data it needs to process. The overwhelming majority of the data is stored in a single thing called the "tracker", which contains dictionaries for civilizations, religions etc, and in turn each entry of those has information, as you say, about architectural styles, building materials, histories, conflicts, blah blah. To answer your question, then, there's basically two parts.
Your checklist suggestion is very accurate. When generating a grid it basically opens up all the relevant information and then "figures out" the best course of action from that. A good example of this is religious districts where, in 0.6, it will spawn an appropriate number of buildings of appropriate size for each religion with a presence in that city. This means it needs to take account of how many there are, then think about a sensible way to lay them out in the district, then pick up all the different religious building styles. This information is generally conflict-free - whenever changes are made, it is stored in all appropriate places. For example, the [family] class stores what civ it belongs to, and the [civ] class stores important families. It means a tiny amount of duplication of ID numbers, but means the game can always check in both places to make sure it's not making a mistake. If it is, an error gets raised (in debug) and I find what caused it. In the rare case where a conflict will still be found, it will default to whichever is considered "more important" - currently this means the information at the lowest resolution is more important, so if you have (in later versions) an instance of an NPC who thinks they belong to Civ X, but Civ X disagrees, the NPC will be the one the game will take. But, again, I try to ensure these conflicts never happen at all, and right now there should be nothing in the game where these conflicts can arise, but as complexity increases, the need for these kinds of checks will increase. One good example is spawning nomadic civilizations - they have a minimum size, so the game has to reject tiny crappy ones. What that means, though, is deleting a lot of data when tiny crappy ones are generated and starting again because the generation algorithm is dealing with other stuff at the same time. It works, and it's fine, but that's probably the best example at the moment.
You've described the game's core very well in your last paragraph, but I'm not sure what you mean by the question, though I know the concept of Divine Perception. Could you describe what kind of error you envisage happening there? If I understand correctly, though, you mean - how can you avoid there being a "true" version the game always checks against? EDIT: or, rather, when there has to be a true version of the game to check against, how can I have the idealism idea? How can the game know "which reality" to choose?