When the plugin needs to return the upstream project it only checks the name of the job, returning the wrong job in special cases.
Consider this scenario:
Both up_job declare "../down_job" as the downstream project to execute manually.
We execute both "up_job" and check a Build Pipeline View.
When we request http://localhost:8080/job/folderA/view/foo/ the data to create the "/down_job" will be like:
We can see that things have been mixed up between two different jobs.
The culprit is the getUpstreamPipelineBuild function (https://github.com/jenkinsci/build-pipeline-plugin/blob/master/src/main/java/au/com/centrumsystems/hudson/plugin/buildpipeline/PipelineBuild.java#L306).
It compares all the upstream jobs of "/down_job" with the "upstreamBuild" of this pipeline build but it only compares the name. If "/folderB/up_job" if first on the list, that job will be always the upstream job for "/down_job".
If we execute "/down_job" clicking the view of "/folderA", we will end with an execution without parent information and the card in the view will not show the results.