Consider a branch source job with the following configuration:
Discover branches: Only branches that are not also filed as MRs
Discover merge requests from origin: Merging the merge request with the current target branch revision
Scenario:
A user pushes a branch
A new job is created for the branch
The branch is built, but the build fails
The plugin pushes a "failed" status with name "jenkinsci/branch" to GitLab
The user creates a merge request
A new job is created for the merge request
The branch job is disabled
The MR job is built and also fails
The plugin pushes a "failed" status with the name "jenkinsci/mr-head" to GitLab
User realizes the build is broken and fixes a bug in the build system (not sure if this is only a problem if the HEAD of the branch doesn't change of if that always happens)
The MR job is built and is now successful
The plugin pushes a "passed" status with the name "jenkinsci/mr-head" to GitLab
The result is now a merge request which is still considered as "failed" by GitLab, because the Job "jenkinsci/branch" will forever be "failed":