Currently you can do stuff like make User:Bawolff/common.js have a CSS content model. This seems messed up. I don't think there is any legitimate reason ever to have user js subpage not be a Javascript content model
I think that in addition to having ContentHandler::canBeUsedOn() like we do currently (which restricts what pages a certain content model can be used on), we should also have a restriction in the other direction, where certain titles can only have the default content model (Or at least, cannot be overriden by normal user). Perhaps a Title::isAllowedCustomContentModel() [Alternatively, we could check it during $title->userCan( 'editcontentmodel' ) and just hook it into existing permission checks]. That way we could say personal user css/js cannot have a content model of something other than JS or CSS.
Thoughts?