# 중복 이름 차단과 기존 바이너리 재구성

등록 이름은 대소문자를 무시하고 유일해야 하며, 다른 테이블의 생성 클래스 이름과 충돌하는 `Name`/`NameTable` 조합도 거부합니다.

## 등록 창의 구분

- 사용 중인 등록 이름: 충돌 안내를 표시하고 등록 버튼을 비활성화합니다.
- 원본은 없지만 마지막 바이너리와 등록이 남음: 재구성 안내를 표시합니다. 확인 후 기존 등록을 새 원본으로 재연결하며 같은 이름의 등록을 추가하지 않습니다.
- 등록은 없고 같은 이름의 생성 바이너리만 남음: 재구성 안내와 동의 체크를 표시합니다.
- 확인 전에는 원본·바이너리를 수정하지 않습니다. 확인하면 새 원본 기준으로 C#·바이너리를 재생성합니다. 재구성은 기존 바이너리에서 원본을 역복원하는 기능이 아닙니다.

기존 생성 파일은 `Tools/RegistrationBackups`에 원본 백업과 함께 보관합니다. 재구성 중 실패하면 이전 출력 파일과 이전 등록 복원을 시도합니다. 정상 등록 중인 원본을 새 원본으로 임의 교체하지 않습니다.

## 검증

- 전체 소스 컴파일 및 **9,903개 회귀 검증 통과**.
- Unity 실제 실행 **112개 통과**, 오류 0개, 샘플 씬 3개 완료. [실행 기록](registration-rebuild-verified/unity-session.jsonl).
- 기존 바이너리 감지, 미확인 재구성 거부와 파일 보존, 확인 후 교체, 기존 바이너리의 백업 바이트, 등록 이름 대소문자 충돌을 검증했습니다.
- 원본을 삭제해 기존 등록을 복구 대상으로 만든 후 다른 새 원본으로 재등록했습니다. 등록이 하나만 남고 원본 경로 및 새 데이터가 올바른지 확인했습니다.
- 9개 언어 안내와 가이드 및 영어 PDF를 갱신했습니다. 실제 팝업 클릭·배치는 미검증입니다.

XERJ: 미사용 — 연결 도구가 없어 rg로 현재 소스를 확인했습니다.
