Wouldn't a lint (warning you about bivariant type parameters or lifetime parameters) deal with this?  The lint could then point the programmer at the `std::kinds::marker` module, and then the programmer who had some particular intuition about what that phantom type was for could actually explicitly write out their intent.