If you add a negotiation phase, I'd recommend doing it in terms of a list<SupportedFeature> rather than a version number. That makes it much easier to backport new features across branches without being forced to backport all other features that might have been introduced between the two.
-Todd
