# [005] `MotionAutoWeight` 임계값 안정성 확인

- **Status:** Open
- **Priority:** Low
- **Raised:** 2026-04-08
- **Raised by:** 앱 팀 (Bruce)
- **앱 측 영향 코드:**
  - `packages/roomfit_exercise/lib/src/segmentation/detectors/six_state_fsm/six_state_fsm_config.dart` — `setRestTimeout` 기본값
  - `docs/reference/rep-detection-research.md` §8.2 (MotionAutoWeight 정합성 노트)

---

## 배경

이전 MCU 소스 분석에서 `MotionAutoWeight` 로직이 다음 임계값을 사용하는 것으로
추정했습니다 (`docs/reference/mcu-source/Core/Src/WESPION_App.c` 어딘가):

| 항목 | 값 | 단위 | 용도 |
|---|---|---|---|
| pull-on threshold | **520** | mm/s | 사용자가 케이블을 당기기 시작했다고 판단 |
| drop-off threshold | **-720** | mm/s | 사용자가 케이블을 놓았다고 판단 (음수=수축 방향) |
| AutoRest speed band | **±35** | mm/s | "정지" 판정 속도 범위 |
| AutoRest dwell | **5000** | ms | 위 범위 내 머문 시간이 이만큼 넘으면 휴식 시작 |

앱은 이 5000ms 값을 참고해서 `SixStateFsmConfig.setRestTimeout` 기본값을
**5초**로 맞췄습니다 (이전엔 3초였음). 사용자 체감 일관성을 위해서입니다.

## 질문

### Q1. 위 4개 값이 현재 펌웨어 기준으로 정확합니까?

특히:
- 520 / -720 mm/s가 좌우 모두 동일한 기준인가요? 아니면 좌우 별도?
- ±35 mm/s가 절댓값 기준인지 (즉 -35..+35), 아니면 양방향 별도 임계인지.
- 5000ms는 연속 dwell이어야 하나요, 아니면 누적입니까?

### Q2. 이 값들이 펌웨어 버전 사이에서 변경될 가능성이 있습니까?

만약 변경된다면:
- (a) 앱이 그 변경을 알 방법이 있는지 (별도 query 명령으로 노출 가능?).
- (b) 그렇지 않다면 펌웨어 변경 시점에 앱 팀에 미리 공지 부탁드림.
- (c) 또는 이 값들을 펌웨어 빌드 시점 상수로 고정해두고, `firmware-compatibility-matrix.md`
  같은 곳에 명시해두는 방안.

### Q3. (선택) 좌우 측 별도 동작인가, 통합 동작인가?

운동 동작은 보통 좌우 동시 진행이지만, 한쪽만 휴식하는 케이스(편측 운동)도
있습니다. `MotionAutoWeight`가 좌우를 독립적으로 트래킹하는지, 아니면 둘 다
정지 상태일 때만 휴식으로 판정하는지 알려주세요.

### Q4. (선택) AutoRest 진입/탈출 시 별도 push 알림이 있습니까?

dev report에 임계 도달 시점이 표현되지는 않지만, 별도 cmd 코드로 push되는
이벤트가 있다면 앱이 그것을 set boundary로 직접 활용할 수 있습니다. 없다면
앱이 자체적으로 dev report의 speed 시계열을 보고 같은 판정을 재현해야 합니다
(현재 방식).

## 참고 (References)

- 백로그 항목: `docs/reference/rep-detection-research.md` §8.2, §8.8 ("MotionAutoWeight 트리거를 set boundary 후보로")
- 앱 측 현재 기본값: `packages/roomfit_exercise/lib/src/segmentation/detectors/six_state_fsm/six_state_fsm_config.dart` `setRestTimeout`

---

## MCU 측 응답

<!-- 펌웨어 팀이 작성. 자유 형식. 작성자/날짜/펌웨어 버전 함께 부탁드립니다. -->

_(미응답)_

---

## 결과 (Outcome)

<!-- 응답 받은 후 앱 팀이 정리. 적용된 펌웨어 버전, 앱 측 후속 PR 번호, 검증 결과 등. -->

_(N/A)_
