diff --git a/doc/진행상황.md b/doc/진행상황.md
index ef85c60..42c8af0 100644
--- a/doc/진행상황.md
+++ b/doc/진행상황.md
@@ -147,6 +147,19 @@ CommunityToolkit 커맨드는 CommandManager 를 구독하지 않는데 이 둘
---
+### 곁들여. 3-Way 에서 BASE 가 비어 보이던 것 — **의도한 동작이었다** (2026-09-09)
+
+`WeldController.cpp` 를 3-Way 로 열면 BASE 칸이 통째로 비어 보였다. 고장이 아니다.
+
+두 브랜치의 공통 조상(`9b48b82`)에는 그 파일이 아예 없다. master 와 feature/cpp-tuning 이
+각자 새로 만든 파일이라 견줄 조상이 없는 것이다. 그래서 모든 줄이 "양쪽에서 새로 넣은 줄"이 되고
+충돌 6개가 나온다. 뜻은 맞다.
+
+**다만 화면이 그 사실을 말해 주지 않았다.** 빈 칸은 누가 봐도 고장으로 읽힌다.
+BASE 머리글에 그렇게 적었다 - `BASE (merge base) · 이 파일 없음 - 양쪽에서 새로 만든 파일입니다`.
+조상에 파일이 있는 경우는 지금까지처럼 파일 이름이 그대로 나온다.
+---
+
### D-1. 주석만 다른 파일을 다른 색으로 — **완료** (2026-09-09)
폴더 비교 결과에 `주석만 다름` 상태를 새로 두었다. 코드는 같고 주석·공백만 다른 파일이다.
diff --git a/src/MergeHub/ViewModels/HomeViewModel.cs b/src/MergeHub/ViewModels/HomeViewModel.cs
index c4fa5ca..40f55f0 100644
--- a/src/MergeHub/ViewModels/HomeViewModel.cs
+++ b/src/MergeHub/ViewModels/HomeViewModel.cs
@@ -624,8 +624,12 @@ namespace MergeHub.ViewModels
Lines.Clear();
foreach (var row in rows) Lines.Add(row);
+ // BASE 가 비어 있으면 그 파일이 공통 조상에 없었다는 뜻이다 - 양쪽 브랜치가
+ // 각자 새로 만든 파일이라 견줄 조상이 없다. 그냥 두면 빈 칸이 고장으로 보인다.
BaseHeader = threeWay
- ? $"BASE ({baseOrigin}) · {path}"
+ ? string.IsNullOrEmpty(baseText)
+ ? $"BASE ({baseOrigin}) · 이 파일 없음 - 양쪽에서 새로 만든 파일입니다"
+ : $"BASE ({baseOrigin}) · {path}"
: $"BASE · {commit.ShortSha} · {path}";
LocalHeader = $"LOCAL · {_workspace.CurrentBranch}";
RemoteHeader = isConflict