The general principle still holds, there are just caveats.

First, invalid states today may become valid tomorrow. If you make them too unrepresentable, you paint yourself into a corner (the 'required' protobuf case).

Second, the invalid states might be a smaller set than what you think they are. Maybe there's a need for manual override, maybe the external data doesn't care about your notion of valid, there may be many reasons.