Except that contract law is not like a computer program. Finding an issue with something (assuming there actually is one) doesn't automatically negate the whole.
Exactly this.
If this was a smart contract on some block chain, that acted at the whim of the contract coding, finding even the smallest of things could trigger some impact to the whole thing.
However, in the actual court system, that doesn't happen. If there is a problem with an item, a solution to that specific item is used. There would need to be a significant quantity of issues large enough to bring the entire agreement into question, or a significant issue that is core to the contract without any other possible solution.
If we pretend the cities were not notified correctly or at all. Resolution is more likely to notify them after the fact and determine if they now agree and would have agreed before or if they have an issue. Correcting the specific problem. If the cities are all good and say there were before too, there is likely no further resolution. Conversely, if the cities say they have an issue and would have acted differently if they had been notified, then further action is likely necessary to resolve the problem. It is possible it could expand all the way out to negating the entire thing, but that is certainly not the staring point. That would be the last solution once any other more targeted resolution of the specific problem was tried.
Pressing that example even further, someone could argue that the city administration cannot make that determination and that it requires input from the city residents. Something that would be logistically impossible in a city with a real population to do after the fact. But, for these specific cities, the entire city government and every impacted resident individually could all be asked directly to resolve any notification problem. If none of them have any problems and are made whole, the issue is likely solved.
This is just an example. The details could all play out differently. The point is that any contract deficiency would attempt to be solved directly prior to invalidating the whole.