> but I think we still have the issue of when to set the alias to "jpa2", since we need all of the product derivations applied to the config before we try to initialize the plugin.
Bootstapping (i.e. setting configuration plugin values via each discovered ProductDerivation) and instantiation/initialization of these plugins are not only two separate concepts, they occur in sequential phase. So I am missing the issue you raised.
ProductDerivation are applied in deterministic order – so that we know who can overwrite whose settings. I have not read through this Validation feature, but from a layman's point of view PersistenceProductDerivation seems to be the right place for setting the plugins value to "jpa2" (btw, that "jpa2" is poor naming – please change it). Its value i.e. ValidatingLifeCycleEventManager will really get instantiated much later.
Another idea (I think the implementation of VLEM is almost there) is as VLEM anyway extends previous LEM, if you can not initialize a VLEM because ValidationFactory/validation provider is missing, validation mode is set to NONE (or whatever) you can degenerate VLEM instance's behavior to that of LEM. In that case you do not even need to configure it – so it will be hardcoded to VLEM (as opposed to LEM).