# ADR-0013 — Phase 4 MVP 완성 선언

상태: **Accepted (2026-05-08, 야간 자율 사이클 8)**

---

## 결정

Phase 4 MVP 자율 진행 가능 영역 모두 완성. 실 라이브러리 통합·실 PLC 통신·라이선스 키 백엔드·첫 매출 등은 사용자 GUI 검증 / 외부 인프라 / 영업 활동 영역 (Phase 4 외).

## 완성 기준 충족 (체크리스트)

### A. 60fps 성능 옵션 (ADR-0008 옵션 A/B/D 적용)

- [x] `Part.dirty` flag + `MarkDirty()`
- [x] `Part.cachedTransform` Dictionary lookup 제거
- [x] `Part.cachedRotation` + `lastSyncedRotationEuler` Quaternion 캐시
- [x] `SimulationLoop` dirty-only sync + cached transform/rotation
- [x] `ConstraintGraph.ApplyConstraint` 자동 dirty 마킹
- [x] 단위 테스트 2 + 통합 테스트 dirty 전파 검증

### B. 라이선스 키 검증 추상

- [x] `ILicenseKeyVerifier` 인터페이스
- [x] `OfflineKeyVerifier` HMAC-SHA256 + base64url + constant-time compare
- [x] 키 형식 `TIER|EXPIRES|HOLDER|HMAC` (구분자 `|`로 ISO8601 콜론 회피)
- [x] ETERNAL 만료 처리
- [x] `LicenseManagerKeyExtensions.ApplyKey()` 통합 API
- [x] 단위 테스트 5: issue+verify / signature mismatch / expired / eternal / apply

### C. Modbus 라이브러리 평가 (ADR-0012)

- [x] NModbus(MIT) 채택 결정
- [x] EasyModbusTCP GPL v3 거부 (상용 감염 위험)
- [x] FluentModbus 보조 후보 등록
- [x] Phase 4 후반 swap 가이드 (스켈레톤 → NModbus 메서드 매핑)

### D. IndustryCase 데이터 모델

- [x] `IndustryCase` 모델 (id, nameKo, nameEn, segment, expectedParts, motorCount, sequenceSteps, keyPoints, glb/project/sequence assets, tip)
- [x] `IndustryCaseLibrary` JSON 직렬화
- [x] 3종 시드: Smart Factory · Automotive · Semiconductor
- [x] 단위 테스트 2 + 통합 테스트 라운드트립

### E. 영어 홍보 페이지 `/home/en`

- [x] `wiki/home-en.html` (한국어 home.html → 영어 변환)
- [x] Hero / Stats / Problem / Solution / Identity / Market / Pricing / Traction / Roadmap / FAQ / CTA / Footer 전체 영어
- [x] `server.py /home/en` + `/home/en/` + `/home-en.html` + `/home-en` 라우트
- [x] 한↔영 토글 링크 양방향 (`/home` → English / `/home/en` → 한국어)
- [x] 가격 USD 환산 표기 (1.5K~3.8K Pro / 7.5K~22.5K Enterprise)

### F. 자동 검증

- [x] **Phase 4 통합 테스트 21/21 PASS** (`Phase4IntegrationTest.cs`)
- [x] **Unit Tests 104/104 PASS** (Phase 1 20 + Phase 2 20 + Phase 3 26 + Phase 4 22)
- [x] Unity batch 컴파일 11차 누적 클린 (error CS 0 / warning CS 0)
- [x] 통합 누적 **63/63 PASS** (Phase 1 11 + Phase 2 10 + Phase 3 21 + Phase 4 21)

### G. 협업자 자료

- [x] ADR-0011 Phase 4 범위
- [x] ADR-0012 Modbus 라이브러리 평가
- [x] **ADR-0013 Phase 4 완성 (이 문서)**
- [ ] README Phase 4 섹션 (사이클 9에서)
- [ ] index.html R2 박스 + /home + /home/en Phase 4 행 (사이클 9에서)
- [ ] PDF v4 재생성 (사이클 9에서)

## Phase 4 외 (사용자 GUI / 외부 인프라 / 영업)

- 시퀀스 편집기 드래그 UX
- 노드 그래프 양방향 sync
- WebGL 빌드 실 검증
- DOTS/ECS 마이그레이션
- 라이선스 키 발급 백엔드 (자체 도메인 + 결제 통합)
- 실 PLC 장비 연결 + NModbus 통합 (사용자 GUI + 실 장비)
- 첫 유료 고객 + 매출 (영업)

## 메트릭 누적

| 지표 | Phase 1 | Phase 2 | Phase 3 | **Phase 4** |
|---|---|---|---|---|
| 컴파일 검증 차수 | 6차 | 7차 | 9차 | **11차** (누적 클린) |
| Unit Tests | 20 | 40 | 82 | **104** |
| 통합 테스트 | 11 | 10 | 21 | **21** (누적 63) |
| ADR | 0001~0003 + cad/ui | +0004+0005 | +0006~0010 | **+0011~0013** (누적 13) |
| 신규 시스템 | 5종 | 6종 | 6종 | **5종** (Performance/LicenseKey/Modbus eval/IndustryCase/EnglishLanding) |
| 외부 URL | `/` | `/` + `/home` | 동일 | **+ `/home/en`** |
| PDF | v1.10 | v2 | v3 | **v4 (사이클 9에서)** |

## Phase 5 입력 (사이클 9~ 자율 진행 후보)

1. **사양 결정 모듈 데이터 모델** — 토크/부하 산정 입력·출력 스키마 (자율 가능)
2. **일본어/독일어 i18n 시드** — 35키 base, 자동화 OEM 시장 확장
3. **세션 토큰 + JWT** — 라이선스 키 백엔드 인터페이스 추상 (Phase 6 백엔드 구현)
4. **WebGL 데모 모드** — Phase 4에서 Phase 5로 보류 결정 (ADR-0009 갱신)

사용자 검증 필요 영역은 Phase 5에서도 자율 진행 외:
- 토크 산정 알고리즘 (외부 자료 필요)
- 사양 결정 정확성 검증 (실 모터 데이터)
- 영어 UI 사용성 (영어권 시연)

## 참고

- ADR-0001~0012 — 기존
- `wiki/journal/2026-05-08.md` — 야간 자율 사이클 1~8 누적 기록
