Merge Request with non-existent target branch shows no diffs and provides poor error messaging
## Description
When a merge request is created targeting a branch that doesn't exist, the MR shows no diffs and provides confusing error states without clearly indicating the root cause.
## Steps to Reproduce
1. Have a project with default branch `master` that has commits
2. Create a merge request via API with `source_branch: feature/my-feature` and `target_branch: main` (where `main` doesn't exist)
3. The MR is created successfully but shows:
- `"diff_refs": null`
- `"has_conflicts": true`
- `"changes_count": null`
- No diffs visible in UI
- No clear indication that the target branch doesn't exist
## Expected Behavior
- The API should validate that the target branch exists and return a clear error (400 Bad Request) if it doesn't
- If the MR is somehow created, the UI should clearly indicate "Target branch 'main' does not exist"
- GitLab Duo Chat/Agents should be aware of the project's default branch and prevent targeting non-existent branches
## Actual Behavior
- MR is created successfully despite targeting a non-existent branch
- No clear error message about missing target branch
- User must manually discover the issue and change target branch
- The MR appears broken with no explanation
## Workaround
Update the MR to target an existing branch (e.g., `master`)
## Impact
- Confusing for GitLab Duo Chat users who may not know the project's branch structure
- Wastes time debugging what appears to be a GitLab bug
- Poor API validation allows invalid state
## Environment
- GitLab Version: 18.10.0 (GitLab.com SaaS)
- API Version: v4
## Additional Context
Issue text was generated by GitLab Duo Chat (Claude Sonnet 4.5 - Anthropic model)
issue