Thanks for writing out.  I like the first idea.  I don't see any real-world scenario where the client can be newer than the central server (as you know I added code to ever allow that to happen anyway), and much larger concerns of us devs misusing the API during development, and having a hard time debugging because of it.

I would prefer to except if a field is requested and isn't recognized whatsoever.  If you still feel uncomfortable, then what about changing the behavior in DEBUG mode (throw) vs not DEBUG mode (blank/None is fine for me in this case)