You're correct in that this is basically what we were talking about just using the terms **semantic versions** and **semantic constraints**. I think it might make sense if these are split up, however I think the inheritance should be the opposite way @jasononeil has suggested for reasons listed in my earlier comment.