Add test case showing limitation of the current implementation of capabilities The current implementation of "capability discovery" works well if everyone agrees on the version to use. However, if they do not, but that a module which gave a preference is evicted (by version conflict, typically), then the constraint is still kept in memory, and we fail. This can be solved by adding rules to remove the preference (not implemented yet).
Report error whenever two modules in the graph disagree on a preference This commit makes it an error case to have two modules provide a preference for a capability, if that preference is not the same. Currently we don't know how to solve such a problem, in particular because preferences can be discovered as the graph grows, and are hard to rollback.