package d links an executable depending on a with
(variants v). package d only depends on a.
Shouldn’t d be required to specify a dependency on either b or c, or something that transitively depends on them at the library level? This seems like a middle ground because, yes you do need to specify something per executable to get it to select concrete implementations, but you’re not forced to enumerate every single one of the concrete libraries. For example, someone could make a platform-js package that defines concrete implementation for several important virtual libraries, tagged with the variant "js". Then the executable only needs to add one library dependency on platform-js.