# Release Notes — v0.1.155 (Servo Maker Presets)

> **사이클 코드**: v0.1.155 (Servo P3 polish — 메이커 프리셋)
> **이전 stable**: v0.1.154 (22nd — Servo Axis P1+P2)
> **자율 진행**: 사용자 명시 "전부 자율진행 계속" + `<<autonomous-loop-dynamic>>`

## 한 줄 요약

서보 구동 축 메이커 프리셋 3종 (Mitsubishi MR-J5 표준 / Yaskawa Sigma-X 고속 / Panasonic Minas A6 범용) — Photosensor 패턴 재사용. Inspector 카드 최상단 "프리셋" 드롭다운 + 일괄 적용 + RecalcVelocityCaches 자동 호출.

## 변경

### 신규 파일

- `Assets/Scripts/Actuators/ServoAxisPresets.cs` (~85라인) — static class. Preset 클래스 (Name/Description/RPM/Torque/Lead/AccelMode/AccelTime/DecelTime/SCurveRatio) + All 리스트 4개 ((사용자 정의) + Mitsubishi + Yaskawa + Panasonic) + Find / Apply 메서드.

### 수정 파일

- `Assets/Scripts/Game/Factory00Bootstrap.cs` — `ServoPresetDropdown(VisualElement, ServoAxisActuator)` 헬퍼 추가 (SensorPresetDropdown 패턴 미러). RenderServoAxisCard 헤더 직후 호출. DropdownField + RegisterValueChangedCallback + ServoAxisPresets.Apply + FlashToast + RenderInspector 재호출.
- `ProjectSettings/ProjectSettings.asset` — bundleVersion 0.1.154 -> 0.1.155.

## 프리셋 사양

| 이름 | RPM | 토크(Nm) | 리드(mm) | 가속모드 | 가속·감속 | SCurve | 비고 |
|---|---|---|---|---|---|---|---|
| (사용자 정의) | — | — | — | — | — | — | skip 마커 (적용 안 함) |
| Mitsubishi MR-J5 (표준) | 3000 | 10.0 | 10 | Linear | 0.3 / 0.3 | 50% | 일반 산업용 |
| Yaskawa Sigma-X (고속) | 6000 | 1.27 | 5 | SCurve | 0.2 / 0.2 | 50% | 진동 최소, 정밀 동작 |
| Panasonic Minas A6 (범용) | 3000 | 5.0 | 10 | Linear | 0.5 / 0.5 | 30% | 저진동 우선 |

## 사용자 영향

| 영역 | 변경 | 효과 |
|---|---|---|
| Inspector | 구동부 카드 최상단 "프리셋" 드롭다운 | 비코딩 사용자가 메이커 사양 1클릭 적용 |
| 데이터 | Apply 시 RatedRPM/RatedTorqueNm/LeadMm/AccelMode/AccelTime/DecelTime/SCurveRatio 일괄 갱신 + RecalcVelocityCaches() 자동 호출 | MaxVelocity 캐시 자동 재계산 |
| Persistence | 변경된 필드는 Part.Actuators 자동 직렬화 | 프로젝트 저장 시 영구 보존 |

## 알려진 한계

- 프리셋 사양 = 메이커 카탈로그 *대표값* 으로 1:1 정확도 X. 후속 사이클에서 모델별 세분화 가능.
- 사용자가 프리셋 적용 후 개별 필드를 변경하면 "(사용자 정의)" 로 자동 전환 안 됨 (드롭다운은 마지막 선택값 유지). UX는 fix 안 함 (Photosensor와 일관).

## critic 자체 검토

| 등급 | 건수 | 처리 |
|---|---|---|
| 치명 | 0 | — |
| 중대 | 0 | — |
| 중간 | 1 | Photosensor / Servo Preset 코드 중복 — 향후 IPresetDropdown<T> 제네릭 추출 가능 (defer) |
| 사소 | 1 | RecalcVelocityCaches 책임이 Apply 안에 있음 (Actuator 자체 호출보다 명시적이라 OK) |

판정: **PASS** — 사이클 진행.

## 외부 URL (빌드 후 갱신 예정)

- 캡처: `os-file-server.tail2b816d.ts.net/qa-screenshots/v0.1.155/servo-preset.png`
- 빌드 zip: `os-file-server.tail2b816d.ts.net/downloads/factory00-windows-x64-v0.1.155.zip`

## 다음 사이클 후보

- **인터페이스 에뮬레이팅** (개발계획서 1번) — Sensor+Actuator+Modbus 통합 시연 시나리오
- **polish**: 드래그 핸들 (spec §7 LocalPosition 뷰포트) / Bootstrap 슬림화 (~4100라인)
- **새 모듈** spec 작성 (제어 컨트롤러 / 토크 후처리 / 충돌 감지 확장)
