# Release Notes — v0.1.157 (24th Stable · Interface Emulation P1)

> **봉인일**: 2026-05-12
> **사이클 코드**: v0.1.157 (Interface Emulation P1 — F12 + RunDemo 코루틴)
> **이전 stable**: v0.1.155 (23rd — Servo Maker Presets)
> **선행 spec**: [`2026-05-12-interface-emulation.md`](../specs/2026-05-12-interface-emulation.md) (v0.1.156 작성)

## 한 줄 요약

인터페이스 에뮬레이팅 P1 — F12 키 1회로 Photosensor + Servo Axis + Mock Modbus 통합 시연 자동 실행. Phase A 자동 어셈블리 -> Phase B 전진/정지 -> Phase C Home 복귀 -> 토스트 5건. 한 빌드 안에서 외부 PLC 없이도 디지털 트윈 시연 자산 확보. **24번째 stable**.

## 변경

### 수정 파일

- `Assets/Scripts/Game/Factory00Bootstrap.cs`
  - 멤버 `bool _emulationDemoRunning` 추가 (중복 실행 가드)
  - `Update()` 안 F12 keydown 감지 -> `StartCoroutine(RunInterfaceEmulationDemo())`
  - `RunInterfaceEmulationDemo()` 코루틴 ~95라인 — Phase A/B/C 시퀀스 + FlashToast 5건 + Debug.Log 4건
- `ProjectSettings/ProjectSettings.asset` — bundleVersion 0.1.155 -> 0.1.157

### 신규 산출물

- `wiki/topics/release-notes/v0.1.157.md` (본 문서)
- `downloads/factory00-windows-x64-v0.1.157.zip` (50 MB)
- `downloads/stable/factory00-windows-x64-v0.1.157-emulation-p1-stable.zip` (24th stable)
- `qa-screenshots/v0.1.157/emulation-demo.png` (1920×1080, 회귀 검증)

## 사용자 영향

| 영역 | 변경 | 효과 |
|---|---|---|
| 단축키 | F12 신규 (Photosensor/Servo 자동 어셈블리 + 시연 자동 실행) | 시연·동영상·미팅 자산 1키 |
| 시뮬 | Phase A 부품 자동 부착 (Photo 코일 10, Servo 코일 11-14, RegPos 100, RPM 3000 / Lead 10mm) | 비코딩 사용자 즉시 검증 |
| 시뮬 | Phase B 2초 전진 -> 정지 (CurrentPos ≈ 1.0 m) | 양방향 PLC sync 시각 확인 |
| 시뮬 | Phase C Home 복귀 (HomePosition = 0m, AxisHomedEvent 발화) | 데모 정상 종료 |
| 외부 PLC | 외부 시뮬레이터 (Modbus Slave / EasyModbusTCP) 연동 가능 (spec §3.2) | "실제로 작동" 미팅 톤 |

## 시나리오 시간선

| t | 동작 | 토스트 |
|---|---|---|
| 0.0s | F12 keydown -> 코루틴 시작 | — |
| 0.0s | 부품 자동 선택 (Parts[0]) | "데모 시작 — {Part.id}" |
| 0.6s | Photosensor 자동 부착 (없는 경우) | "포토센서 부착 (코일 10)" |
| 1.2s | Servo Axis 자동 부착 + 코일 매핑 + 가속 설정 | "구동부 부착 (코일 11-14, 레지스터 100)" |
| 1.8s | RenderInspector 강제 갱신 | "Modbus 매핑 자동 (10-14, 100)" |
| 2.6s | actuator.CommandForward() -> MovingForward 상태 | — |
| 4.6s | actuator.CommandStop() | "센서 감지 모사 -> 정지 (위치 ≈ X.XX m)" |
| 6.1s | actuator.CommandHome() | "Home 복귀 명령" |
| ~10s | CurrentPos == HomePosition 도달 | "Home 복귀 완료 — 데모 종료" |

총 시연 시간: ~10초. 토스트 5건 + Debug.Log 4건으로 PASS/FAIL 검증.

## critic 자체 검토

| 등급 | 건수 | 처리 |
|---|---|---|
| 치명 | 0 | — |
| 중대 | 0 | — |
| 중간 | 2 | (1) 첫 빌드 Motors 컨텍스트 오류 — Parts SSOT로 fix. (2) Phase B 정지가 "Sensor 실 감지" 가 아닌 "단순 2초 timer" — v0.1.158 P2 에서 Photosensor LineRenderer가 Actuator 충돌 감지 시 정지로 확장 예약 |
| 사소 | 2 | (1) 토스트 5건이 같은 timing에 겹쳐 출현 가능 (severity 분기 안 함). (2) F12 = Windows 개발자 도구 충돌 가능 (빌드 환경 사용자 PC 영향 X — 안전) |

판정: **PASS** — 24번째 stable seal 봉인.

## 알려진 한계 (P2+ 예약)

- **사실적 시연**: Sensor 가 Actuator 위치 변화로 실 감지하는 시나리오 (현재는 timer 모사)
- **다중 부품 시퀀스**: sensor 3개 + actuator 3개 동시 동작 (spec §9 Phase 2)
- **시연 녹화 자동화**: Unity Recorder 또는 외부 OBS 통합 (spec §9 Phase 4)
- **외부 PLC HW 연동**: Mitsubishi MX Component (사용자 SDK 도착 대기)

## 외부 URL

- 캡처: `os-file-server.tail2b816d.ts.net/qa-screenshots/v0.1.157/emulation-demo.png`
- 빌드 zip: `os-file-server.tail2b816d.ts.net/downloads/factory00-windows-x64-v0.1.157.zip`
- 봉인 zip: `os-file-server.tail2b816d.ts.net/downloads/stable/factory00-windows-x64-v0.1.157-emulation-p1-stable.zip`
- spec: `os-file-server.tail2b816d.ts.net/topics/specs/2026-05-12-interface-emulation.md`

## 누적 stable seal 진척 (2026-05-12)

| stable # | 버전 | 모듈 |
|---|---|---|
| 19th | v0.1.131 | Inspector Transform Redesign |
| 20th | v0.1.148 | Photosensor P1+P2 |
| 21st | v0.1.151 | Photosensor P3 (Persistence + PLC + Presets) |
| 22nd | v0.1.154 | Servo Axis P1+P2 |
| 23rd | v0.1.155 | Servo Maker Presets |
| **24th** | **v0.1.157** | **Interface Emulation P1** |

총 6 stable seal in 2026-05-12 / 모듈 spec 3건 완전 구현 (Photo + Servo + Emulation).

## 다음 사이클 후보

- **v0.1.158 P2**: Phase B 정지 트리거를 Sensor 실 감지로 전환 (Photosensor 가 Actuator 끝단을 감지하도록 부품 배치)
- **v0.1.159 P3**: 다중 부품 시퀀스 (Conveyor -> Sensor -> Stop -> Pick -> Place)
- **새 모듈 spec**: 회전 구동축 (RotaryActuator) / 관통형 포토센서 / 근접 센서
- **polish**: 드래그 핸들 / Bootstrap 슬림화 (~4200라인)
