# User Review Resolved - m-control-plane-separation-migration/03+02_online_state

## 요청 일시

2026-06-05

## 상태

RESOLVED

## 해소 일시

2026-06-05

## 사유

- 유형: environment-blocked
- 현재 리뷰 회차: 2
- 최종 판정: PASS/RESOLVED
- 요약: repo-local online-state 구현과 focused OTO Server 검증은 통과했다. 사용자는 iop 제거/분리 작업이 진행 중인 맥락에서 legacy iop smoke 실패가 이번 `online-state` 완료 차단이 아니라고 승인했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G06_0.log` | `code_review_cloud_G06_0.log` | FAIL | rejected registration heartbeat, terminal state late heartbeat, path/body runner id mismatch, verification placeholder 문제 |
| `plan_cloud_G06_1.log` | `code_review_cloud_G06_1.log` | FAIL | repo-local fix는 통과했지만 legacy `iop` smoke가 sibling repo 컴파일 오류로 차단 |

## 차단 근거

- 문제: `test/oto_iop_connection_smoke_test.dart`가 외부 sibling `iop` repo를 실행하는 과정에서 Go 컴파일 오류로 실패한다.
- 현재 archive plan: `plan_cloud_G06_1.log`
- 현재 archive review: `code_review_cloud_G06_1.log`
- 검증 명령: `cd apps/runner && dart test test/oto_agent_migration_plan_test.dart test/oto_agent_bootstrap_script_test.dart test/oto_agent_cli_test.dart test/oto_agent_config_test.dart test/oto_agent_registration_test.dart test/oto_iop_connection_smoke_test.dart test/oto_server_connection_smoke_test.dart`
- 실제 출력:

```text
iop Edge exited before listening (code 1):
# iop/apps/edge/internal/transport
apps/edge/internal/transport/server.go:11:2: "git.toki-labs.com/toki/proto-socket/go/packets" imported and not used
# iop/apps/edge/internal/service
apps/edge/internal/service/service.go:15:2: "iop/packages/go/config" imported and not used
apps/edge/internal/service/service.go:556:9: declared and not used: snap
apps/edge/internal/service/service.go:560:6: declared and not used: out
```

- 차단 판단 근거: 실패 지점은 현재 `oto` repo가 아니라 sibling `../../../iop` checkout의 컴파일 상태다. 이번 task의 scope는 OTO Server online-state 마이그레이션이며, 외부 iop 코드 수정이나 legacy smoke 제외 여부는 사용자 결정이 필요하다.

## 사용자 결정

- [x] legacy `iop` smoke 실패를 이번 `online-state` 완료 차단에서 제외하고 PASS로 종료한다.
- [ ] 자동 follow-up plan/review를 계속 진행한다.
- [ ] 계획을 재작성한다.
- [ ] 테스트 환경, secret, 외부 서비스, SDK, 장비 조건을 준비한 뒤 재시도한다.
- [ ] 작업 범위를 줄이거나 보류/폐기한다.

## 해소 근거

- 사용자 결정: "`iop`가 에러 나도 상관 없는" 상황이며, 해당 작업은 iop에서 OTO를 제거/분리하는 흐름과 맞물려 있어 legacy iop smoke 실패를 이번 OTO Server `online-state` 완료 차단으로 보지 않는다.
- 리뷰 판단: `git diff --check`, `cd services/core && go test ./...`, `cd apps/runner && dart analyze`, `cd apps/runner && dart test test/oto_agent_migration_plan_test.dart test/oto_agent_registration_test.dart test/oto_server_connection_smoke_test.dart`는 통과했다.
- 최종 처리: 사용자 승인으로 full agent smoke의 legacy iop 실패는 `BLOCKED/EXCLUDED`로 기록하고 task를 PASS/RESOLVED로 종료한다.

## 최종 상태

- `complete.log` 작성 완료.
- task directory archive 이동 완료.
- 추가 자동 follow-up plan/review 없음.
