# v0.1.491 — QA-102 B-03 컴포넌트 추가 Ctrl+Z Undo 등록 (5 컴포넌트 + redo/NRE 가드)

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

---

## 핵심 변경
- **B-03 (컴포넌트 추가 후 Ctrl+Z 무동작)**: root cause = Add 헬퍼(센서/구동부)가 `list.Add + driver.Register` 직접 호출 → `_undoStack` 미경유. fix = 신규 `AddComponentCommand : IEditCommand` (Execute=add+UI갱신, Undo=remove+UI갱신) + 5개 Add 헬퍼(PhotoSensor/ServoAxis/Pneumatic/RotaryActuator/RotaryPneumatic) `_undoStack.ExecuteAndPush` 경유. Delete/Duplicate/Cut/Gizmo 패턴 미러.
## critic FAIL → 치명 2건 해소
- **치명 #1 (redo 중복 등록)**: `ActuatorDriver.RegisterActuator` / `SensorPollingDriver.RegisterSensor` 가 `_actuators/_sensors.Add` 무방어 → `if (Contains) return;` dup 가드 추가 (Undo/Redo 재등록 시 2배 발화/유령 차단).
- **치명 #2 (stale Part NRE)**: Part 삭제 후 Add-undo 역전 시 `_part.cachedTransform` 파괴 → RenderInspector NRE. `_part.cachedTransform != null` Unity-null 가드 추가.
## 범위 외 (B-03 후속 큐)
- 중대: Remove 헬퍼 3종 Undo 미지원 (Add↔Remove 비대칭) / TowerLamp Add Undo 미래핑 → 별도 사이클.
- 다중선택 Add = 부품마다 별도 Undo 커맨드 (Ctrl+Z M회) — batch 는 후속.
## 검증
- 빌드 컴파일 + 사용자 PC: 컴포넌트 추가 → Ctrl+Z 복원 / Ctrl+Y 재추가 (2배 속도/유령 無).
## 영향 파일
- `Assets/Scripts/Game/Factory00Bootstrap.cs` — AddComponentCommand + 5 헬퍼 wrap.
- `Assets/Scripts/Actuators/ActuatorDriver.cs` · `Assets/Scripts/Sensors/SensorPollingDriver.cs` — dup 가드.
