Having misuse-resistant types is (mostly) an all or nothing approach. Thus, the first thing would be to agree on this approach. The second thing would be to document it. More specifically, we would start to call the possibility to instantiate an invalid type a bug and treat it like so, i.e., resolve it.
Sometimes, however, there are many options to tighten a type with different pros and cons and it may not be obvious what to do.
There are also libraries for tight types that may be useful.
We should discuss and document this approach somewhere to reduce friction and make best use of this approach.
Having misuse-resistant types is (mostly) an all or nothing approach. Thus, the first thing would be to agree on this approach. The second thing would be to document it. More specifically, we would start to call the possibility to instantiate an invalid type a bug and treat it like so, i.e., resolve it.
Sometimes, however, there are many options to tighten a type with different pros and cons and it may not be obvious what to do.
There are also libraries for tight types that may be useful.
We should discuss and document this approach somewhere to reduce friction and make best use of this approach.