What should be the logic for setting the version then ?
If I understand correctly, using "Create Delivery Pipeline version" sets an env variable "PIPELINE_VERSION", and also passes it on as a build parameter to jobs downstream, whether or not the "set Build display name" is actually checked.
Also, currently the default behavior is to use the first build's display name (whether or not it was set by the mechanism above) as the pipeline instance version.
I would propose that the pipeline would look at the PIPELINE_VERSION env variable, starting from the end of the pipeline and moving backwards if necessary (to reflect the fact that you can set/override the pipeline version later in the pipeline). If that env var is not found anywhere in the pipeline instance builds, then the logic would default to the current behavior, in order to maintain backward-compatibility.
Does that sound sensible?
Thanks for your feedback!