# v0.1.522 — S0048/S0012 C6b 드래그 어드레스 할당 + 역기록 영속

- 버전: v0.1.522
- 날짜: 2026-06-03
- 다운로드: [factory00-windows-x64-v0.1.522.zip](../../downloads/factory00-windows-x64-v0.1.522.zip) (170 MB)
- 캡처: [qa-screenshots/v0.1.522/](../../qa-screenshots/v0.1.522/)

---

## 핵심 변경
- 4탭 매핑 에디터 드래그앤드롭 할당 — 좌측 미할당 포트를 우측 활성 탭으로 드래그 → 다음 빈 주소 자동 연속 할당
- 좌측 = 활성 탭 device 일치 포트만(Bit→출력/Coil, Word→데이터출력/HoldingRegister). 미할당=드래그 / 할당=주소 표시
- 역기록 영속: `PlcAddressMigration.Apply`(Register 거울상, 5종) → 옛 필드 write → 다음 로드 populate 재생산(소실 0, 옛 필드 SSOT)
- `AddressMappingChangedEvent` 발행 + 자동 연속 할당(1부터, device별 빈 슬롯)
- 드래그 5-핸들러(구식 패널 이식 + S0055 CapturePointer/pointerId 가드) + panel.Pick hit-test + box-select decouple(_plcMappingDragActive)
## 사이클 분할 (C6c 이월)
- 수동 입력 + 자동/수동 토글 + 충돌 모달 + DWord 2행 + TowerLamp base+offset + 실시간값
- 탭 입력/데이터입력(DiscreteInput/InputRegister)은 옛 필드 backing 없어 비노출(C4 직렬화 후 영속 가능)
## 영향 파일
- `Assets/Scripts/Plc/PlcAddressMappingPanel.cs` (드래그 + 좌측 포트행 + 할당 재작성)
- `Assets/Scripts/Plc/PlcAddressMigration.cs` (Apply 역기록 writer +52라인)
- `Assets/Scripts/Game/Factory00Bootstrap.cs` (OnDragStateChanged/OnToast wiring + box-select 가드)
## 검증
- 컴파일 PASS 목표. 드래그 동작 시각검증 = Stage 2 사용자 PC 마우스 (헤드리스 자동화 외)
- spec S0012 r006 §3 드래그 자동할당 / S0048 §6. spec WHAT 충족, HOW 코드 최적
