# User Review Required - m-api-centered-proto-socket-rail/03+01_client_api_wrappers

## 요청 일시

2026-05-30

## 상태

USER_REVIEW

## 사유

- 유형: environment-blocked
- 현재 리뷰 회차: 2
- 최종 판정: FAIL
- 요약: private testing env를 재확인한 뒤 원격 `ssh toki@toki-labs.com`에서 검증을 실행했다. focused/all Flutter tests와 web runtime smoke, repo 표준 `bin/lint`는 통과했지만, raw `flutter analyze`는 기존 Mattermost `avoid_print` info 13건으로 exit 1이고 Android emulator smoke는 설치 후 log reader가 멈춰 실패했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `agent-task/m-api-centered-proto-socket-rail/03+01_client_api_wrappers/plan_cloud_G07_0.log` | `agent-task/m-api-centered-proto-socket-rail/03+01_client_api_wrappers/code_review_cloud_G07_0.log` | FAIL | 검증 stdout/stderr 누락, review checklist 부재, error-path test 누락, 전체/smoke 검증 미충족 |
| `agent-task/m-api-centered-proto-socket-rail/03+01_client_api_wrappers/plan_cloud_G07_1.log` | `agent-task/m-api-centered-proto-socket-rail/03+01_client_api_wrappers/code_review_cloud_G07_1.log` | FAIL | error-path test는 추가됐고 원격 검증을 재시도했으나 raw analyze와 Android smoke가 남음 |

## 차단 근거

- 문제: `REVIEW_CLIENT-2`의 원격 검증 evidence가 일부 확보됐지만, raw `flutter analyze`와 Android emulator smoke가 완료 기준을 막고 있다.
- 현재 archive plan: `agent-task/m-api-centered-proto-socket-rail/03+01_client_api_wrappers/plan_cloud_G07_1.log`
- 현재 archive review: `agent-task/m-api-centered-proto-socket-rail/03+01_client_api_wrappers/code_review_cloud_G07_1.log`
- 검증 명령:
  - `cd apps/client && flutter test test/integrations/socket/alt_socket_client_test.dart`
  - `cd apps/client && flutter test`
  - `cd apps/client && flutter analyze`
  - `cd apps/client && dart run test -p chrome test_runtime/socket_web_runtime_smoke_test.dart --timeout 30s`
  - `cd apps/client && flutter test integration_test/socket_runtime_smoke_test.dart`
- 실제 출력:
  - `cd apps/client && flutter test test/integrations/socket/alt_socket_client_test.dart`: 통과, `00:00 +13: All tests passed!`
  - `cd apps/client && flutter test`: 통과, `00:01 +22: All tests passed!`
  - `cd apps/client && flutter analyze`: 실패, Mattermost `mattermost_auth_service.dart`의 기존 `avoid_print` info 13건, `13 issues found. (ran in 5.2s)`
  - `bin/lint`: 통과. 같은 13개 info를 출력하지만 `flutter analyze --no-fatal-infos` 정책으로 exit 0.
  - `cd apps/client && dart run test -p chrome test_runtime/socket_web_runtime_smoke_test.dart --timeout 30s`: 통과, `00:00 +1: All tests passed!`
  - `cd apps/client && flutter test -d emulator-5554 integration_test/socket_runtime_smoke_test.dart --dart-define=ALT_SOCKET_HOST=10.0.2.2 --dart-define=ALT_SOCKET_PORT=13000 --dart-define=ALT_SOCKET_PATH=/socket`: 앱 빌드/설치 후 장시간 무출력으로 멈춰 프로세스를 정리함. 최종 출력은 `No tests ran. Error waiting for a debug connection: The log reader stopped unexpectedly`.
- 차단 판단 근거: raw analyzer failure는 이번 wrapper 변경 밖의 기존 Mattermost info이며 repo 표준 `bin/lint`는 통과한다. Android smoke는 원격 device/debug connection 계층의 hang으로 재시도 또는 생략 판단이 필요하다.

## 사용자 결정 필요

- [ ] 자동 follow-up plan/review를 계속 진행한다.
- [ ] 계획을 재작성한다.
- [ ] Android emulator/debug connection 상태를 정리한 뒤 device smoke를 재시도한다.
- [ ] 이번 client wrapper 범위에서는 raw `flutter analyze` 대신 repo 표준 `bin/lint` 통과를 lint evidence로 인정하고 Android smoke를 보류/생략한다.
- [ ] 작업 범위를 줄이거나 보류/폐기한다.

## 재개 조건

- Android emulator smoke를 다시 실행해 통과하거나, 이번 task의 완료 기준에서 Android smoke를 보류/생략한다는 사용자 결정을 기록한다.
- raw `flutter analyze`의 기존 Mattermost info를 이 task의 blocker로 볼지, repo 표준 `bin/lint` 통과로 대체할지 결정한다.

## 다음 실행 힌트

- 권장: 이번 wrapper 범위에서는 `bin/lint` 통과를 analyzer evidence로 인정하고 Android smoke는 환경 hang으로 보류한 뒤, focused/all tests와 web smoke 통과를 근거로 USER_REVIEW를 해소한다. Android smoke를 필수로 유지한다면 emulator/debug connection 정리 후 재시도한다.

## 종료 규칙

- 사용자가 이 stop state를 완료/PASS로 해소하면 `USER_REVIEW.md`를 해소 상태로 갱신하고, `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다.
- 새 구현이 필요하면 `plan` 스킬이 `USER_REVIEW.md`를 `user_review_N.log`로 아카이브한 뒤 새 `PLAN-*-G??.md` / `CODE_REVIEW-*-G??.md`를 작성한다.
