---
title: 지난 QA에서 재현·수정한 8종의 문제와 검증 한계
date: 2026-10-29T18:18:49.728Z
version: v1.0.1
status: 해결
state: verification
project: enginemigrator
type: 버그
report_kind: bug
category: 버그 추적
summary: 출력 경계·설명자·의존성 지문·파일 조사·동의 재사용·엔진 값·바이너리 탐지·경고창 문제를 수정했습니다. 10월 29일 기록이며 엔진 E2E는 미실행입니다.
format: tracefolio-v2
priority: high
severity: normal
reporter: 미기록
assignee: 미지정
workflow: resolved
payload: ../assets/submissions/2026-10-29-bug-20261029181849728-v1.0.0.json
---

## 작업 결과

2026-10-29 배포 DLL 자체에서 Core 실패 사례 8건을 재현했습니다. 두 .meta 사례를 한 종류로 묶으면 Core 문제 7종이며, 최소 경고창 버튼 잘림 1종을 합쳐 8종입니다. 수정 후 해당 독립 검사와 기존 회귀가 통과했습니다. 이 해결 상태는 아래 문제 범위에 한정하며 전체 엔진 포팅 QA의 종료를 뜻하지 않습니다.

2026-10-30 이미지 누락 보완: 아래는 2026-10-29 실제 WinForms 렌더링 QA에서 저장한 화면입니다. 합성 플러그인 후보 80개를 사용했으며 엔진 실행 화면은 아닙니다.

![수정 전: 최소 크기 경고창의 선택 버튼 하단이 잘린 QA 재현 화면](../assets/qa-20261029-consent-minimum-before.webp)

![수정 후: 최소 크기 경고창 안에 네·아니오 버튼 전체가 표시되는 QA 화면](../assets/qa-20261029-consent-minimum-after.webp)

![수정 후: 기본 크기 외부 플러그인 경고창의 목록과 명시적 네·아니오 선택 화면](../assets/qa-20261029-consent-dialog.webp)

## 변경 내용

### 재현 조건

2026-10-29 Windows의 EngineMigrator 개발 프리뷰를 사용했습니다. 이전 Core SHA-256 A8B8E8115BFADAE8C8FE944797AE59AC6F4647E0024B5B63B33E8E99004973A2와 수정 배포본을 합성 프로젝트로 비교했습니다. .NET 앱·CLI·MSVC 독립 실행 환경이며 Unity/Unreal은 실행하지 않았습니다.

### 재현 순서

1. 대상 프로젝트 또는 중첩 Content를 부분 코드 출력 위치로 지정합니다.
2. Name이 없는 Unreal 플러그인 설명자를 검사합니다.
3. 동의 후 DLL 또는 플랫폼 번들의 .meta만 변경하고 재검사합니다.
4. Assets/bin 아래 사용자 C#을 조사합니다.
5. 같은 동의 객체로 두 독립 작업 또는 동시 작업을 시작합니다.
6. 정의되지 않은 엔진 값 99를 전달합니다.
7. Unreal Binaries/Win64에 합성 VendorSDK.dll을 두고 조사합니다.
8. 경고창을 최소 크기로 렌더링하고 버튼 경계를 확인합니다.

### 기대 동작

원본·대상에 쓰지 않고, 잘못된 설명자·엔진 값은 구조화된 진단으로 거부하며, 의존성 변경과 재사용 동의를 차단하고 사용자 파일·바이너리를 조사해야 합니다. 최소 창에서도 선택 버튼이 잘리지 않아야 합니다.

### 실제 동작

이전 버전은 대상 내부 출력 생성, KeyNotFoundException, .meta 변경 수용 2건, Assets/bin C# 누락, 동의 재사용, 엔진 99 수용, Binaries DLL 누락을 보였습니다. 별도 UI 재현에서는 버튼 하단이 잘렸습니다.

### 원인

확인한 구현 경계의 누락입니다. 대상 경로 보호가 빠졌고, Name을 필수 확인 없이 읽었으며, 일부 .meta와 Binaries가 지문/후보에서 빠졌습니다. 폴더 이름만으로 파일을 제외하고 동의 객체의 단일 사용을 강제하지 않았습니다. 엔진 열거값과 최소 버튼 영역도 검증이 부족했습니다. 재현 기록과 수정 후 같은 검사로 확인한 범위입니다.

### 적용 내용

- 원본·대상과 그 내부 출력 경로를 모두 차단했습니다.
- Name·Enabled를 확인하고 설명자 경로가 있는 차단 진단으로 반환합니다.
- DLL/번들의 .meta와 Unreal Binaries·.modules/.target을 지문에 포함했습니다.
- 프로젝트 설정을 근거로 빌드 폴더를 구분해 사용자 파일 누락을 수정했습니다.
- 작업 시작에서 동의를 원자적으로 한 번만 사용하도록 했습니다. 한 작업 안의 반복 변경 검사는 허용합니다.
- 정의된 엔진 값만 받도록 했습니다.
- 최소 경고창 버튼 여백과 줄바꿈을 수정했습니다.
- 이후 실제 입력 조사에서 중복 경로 조회를 줄이고 해시 도중 취소 확인을 보강했습니다. 단회 시간 관측 213.65초→131.87초는 캐시 영향을 분리하지 않았으므로 일반 속도 보장이 아닙니다.
- 오늘은 위 수정 기록을 분리 등록했으며 새 수정·재시험으로 표시하지 않습니다.
- v1.0.1 문서: 누락된 실제 QA 캡처 3개를 무손실 WebP로 첨부했습니다. 이전 v1.0.0은 보존합니다.

## 검증

- 아래 제품 테스트는 모두 2026-10-29에 수행한 기록입니다. 2026-10-30에 다시 실행했다고 표시하지 않습니다.
- 이전 배포 Core DLL 재현 10개 중 실패 8개, 수정 후 독립 QA 18개 통과, 기존 회귀 검사 403개 통과를 대조했습니다.
- 실제 배포 exe의 오프스크린 자체 검사와 한글 폴더에서의 실행, CLI 프로세스의 잘못된 엔진 값·리디렉션 승인 차단, 원본/복원 C# 및 생성 C++ 독립 실행을 확인한 기록입니다.
- C++의 벡터/쿼터니언 저장 구조는 대역입니다. Unreal 런타임·Transform·GC 실행 검증이 아닙니다.
- WinForms OnClick 결과 전달과 기본/최소 레이아웃 렌더링을 확인했습니다. 실제 사람이 마우스·키보드로 모달 창을 조작하는 E2E 테스트는 아닙니다.
- 사용자 제공 Unity 입력의 파일 60개·C# 2개·의존성 후보 155개를 읽기 전용으로 조사했습니다. 추적한 원본 파일 4개의 해시는 같았습니다. 엔진 실행 또는 포팅 완료 검증이 아닙니다.
- 방화벽 규칙은 읽기 전용으로 조회했습니다. Unity·Unreal·게임·엔진 빌드는 이번 QA에서 실행하지 않았습니다.
- 오늘은 보존된 기록의 범위를 대조하고, 배포 Core·ZIP·압축 안의 Core SHA-256과 ZIP CRC/파일 수 370개를 재확인했습니다.
- [공개용 검증 요약 JSON](../assets/qa-scope-evidence-20261030.json)에는 개인 경로·원본 로그·세션 기록을 제외했습니다.
- 원본 PNG와 압축 WebP의 RGB 픽셀이 모두 같은지 비교했습니다. 각 이미지 200KB 미만이며 공개 전 개인 경로가 없는지 시각 확인했습니다. 이번 보완에서 제품·엔진 테스트를 새로 실행하지 않았습니다.

## 남은 사항

- Unity → Unreal → Unity 실제 엔진 포팅·빌드·게임 실행을 확인하는 엔진 E2E QA는 미실행입니다.
- 실제 게임플레이·화면·물리·애니메이션 동등성, 임의 외부 플러그인, 모든 엔진 버전의 지원은 이번 결과로 보증하지 않습니다.
- 실제 모달 사용자 입력·모든 DPI/해상도·실물 심볼릭 링크는 미검증입니다.
- 다음 엔진 E2E 검증은 승인된 안전 실행기·개인 복사본·방화벽 사전 확인을 유지하고, 원본과 결과의 실제 실행을 대조해야 합니다. 안전 차단을 우회하거나 과거 캡처로 대체해서는 안 됩니다.
- Windows 실행 폴더와 ZIP은 로컬 배포본입니다. 프로그램 파일을 공개 다운로드로 올린 것은 아닙니다.

## 작업 시간

- 제안 시간: 이미지 첨부 보완 및 외부 배포 확인 5~10분.
- 실제로 완료된 시간: 2026-10-30 03:18:00 KST 착수. 이미지 준비·게시 후 최종 응답에 전체 소요 시간과 완료 시각을 기록합니다.
- XERJ: 미사용 — 보존된 QA 기록과 배포 파일 무결성 대조·보고서 등록 작업이며 제품 코드 검색은 불필요했습니다.
