# v0.1.523 — S0048/S0012 C6b 드래그 할당 + critic 치명/중간 fix

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

---

## 핵심 변경
- 4탭 매핑 에디터 드래그앤드롭 할당 — 좌측 미할당 포트 드래그 → 우측 활성 탭 → 다음 빈 주소 자동 연속 할당
- 역기록 영속 `PlcAddressMigration.Apply`(5종, Register 거울상) → 옛 필드 write(옛 필드 SSOT, 다음 로드 재생산)
- AddressMappingChangedEvent 발행 + box-select decouple(_plcMappingDragActive) + 드래그 5-핸들러(S0055 가드)
## critic 코드리뷰 fix (FAIL → 처리)
- 치명#1 (TowerLamp Ch 드래그 → Apply no-op 소실) → CanAssign 가드: TowerLamp 포트 드래그 제외("미할당 — C6c" 비드래그 표시). base+offset은 C6c
- 치명#2 (PointerCancel capture leak) → Cancel 핸들러에서 HasPointerCapture 시 ReleasePointer
- 중간#1 (드래그 중 탭 전환 → 잘못된 device) → AssignPort device = 포트 고유 TabDevice(PortTab(port))
- 중간#2 (재진입 이중 캡처) → PointerDown _dragActive 가드
- 중대#3(Rotary Home 누락) = critic 오판(L83 존재, Apply↔Register 6/5/4/4/1 전부 대칭) / 중대#1·#2 = 저위험 수렴
## 영향 파일
- `Assets/Scripts/Plc/PlcAddressMappingPanel.cs` (드래그+좌측+할당 + critic fix)
- `Assets/Scripts/Plc/PlcAddressMigration.cs` (Apply 역기록)
- `Assets/Scripts/Game/Factory00Bootstrap.cs` (wiring + box-select 가드)
## 검증
- 컴파일 PASS 목표. 드래그 시각검증 = Stage 2 사용자 PC 마우스. 다음 C6c(수동입력/토글/충돌모달/DWord/TowerLamp base+offset)
