<!-- task=m-proto-socket-infrastructure-communication-rail/01_client_transport plan=1 tag=REVIEW_API -->

# Plan - REVIEW_API Verification Evidence Recovery

## 이 파일을 읽는 구현 에이전트에게

이 plan의 구현이 끝나면 active `CODE_REVIEW-*-G??.md`에서 구현 에이전트 소유 섹션을 실제 검증 출력, 변경 사항, 설계 결정으로 채워야 한다. 최종 archive, `complete.log`, 리뷰 판정은 code-review-skill 전용이다. 구현 중 사용자만 결정할 수 있는 범위 변경, 사용자 소유 외부 환경/secret 준비, 또는 안전한 진행을 막는 scope 충돌이 있으면 review stub의 `사용자 리뷰 요청` 섹션에 정확한 결정과 근거를 남기고 멈춘다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 메울 수 있는 검증 공백만으로는 사용자 리뷰 요청을 만들지 않는다.

## 배경

첫 구현 루프는 client proto-socket transport 코드를 추가했지만, 필수 Flutter 검증 명령이 모두 `not run`으로 남아 PASS 판정을 받을 수 없었다. 현재 로컬 규칙은 테스트/검증을 금지하고 원격 검증 환경을 기본으로 두므로, 다음 루프는 허용된 환경에서 실제 stdout/stderr를 회수하는 데 집중한다. 검증 실패가 나오면 원인 코드나 테스트만 최소 수정한다.

## 사용자 리뷰 요청 흐름

구현 중 blocker는 active review stub의 `사용자 리뷰 요청` 섹션에 기록한다. code-review가 해당 요청을 검증하고 실제 `USER_REVIEW.md` 작성 여부를 결정한다.

## 분석 결과

### 읽은 파일

- `agent-task/m-proto-socket-infrastructure-communication-rail/01_client_transport/plan_cloud_G07_0.log`
- `agent-task/m-proto-socket-infrastructure-communication-rail/01_client_transport/code_review_cloud_G07_0.log`
- `agent-test/local/rules.md`
- `agent-test/local/mobile-smoke.md`
- `agent-ops/rules/project/domain/mobile/rules.md`
- `agent-ops/rules/project/domain/contracts/rules.md`
- `agent-ops/rules/project/domain/workspace-ops/rules.md`
- `apps/client/lib/src/integrations/proto_socket/proto_socket_envelope.dart`
- `apps/client/lib/src/integrations/proto_socket/proto_socket_client.dart`
- `apps/client/lib/src/integrations/proto_socket/proto_socket_lifecycle.dart`
- `apps/client/lib/src/integrations/proto_socket/proto_socket_endpoint_config.dart`
- `apps/client/lib/src/app/bootstrap.dart`
- `apps/client/lib/src/app/nomadcode_client_app.dart`
- `apps/client/test/integrations/proto_socket_envelope_test.dart`
- `apps/client/test/integrations/proto_socket_lifecycle_test.dart`
- `apps/client/test/integrations/proto_socket_endpoint_config_test.dart`
- `apps/client/pubspec.yaml`
- `apps/client/pubspec.lock`
- `../proto-socket/dart/lib/proto_socket.dart`
- `../proto-socket/dart/lib/src/ws_protobuf_client_io.dart`
- `../proto-socket/dart/lib/src/ws_protobuf_client_web.dart`
- `../proto-socket/dart/lib/src/communicator.dart`
- `../proto-socket/dart/lib/src/base_client.dart`
- `../proto-socket/dart/pubspec.yaml`

### 테스트 커버리지 공백

- `ProtoSocketEnvelope` round-trip tests exist, but their actual result is missing.
- Lifecycle, connector factory, parser map, and transport delegate tests exist, but their actual result is missing.
- `flutter pub get` and analyzer results are missing, so dependency and compile/analyze confidence is not established.

### 심볼 참조

- `ProtoSocketConnector.connect` source/test call sites were updated to return `ProtoSocketTransport`.
- `NoopProtoSocketConnector` remains as a fallback/test connector; no removed source call site was found.

### 분할 판단

This is a follow-up under existing split subtask `01_client_transport`. No new split is needed because the only Required issue is verification trust recovery for the files already changed by the prior implementation.

### 범위 결정 근거

Do not expand into task service, workspace UI integration, Core Go code, or roadmap updates. Source changes are allowed only if the required verification commands fail and the failure points to this subtask's client transport code, tests, or dependency manifest.

### 빌드 등급

Build lane `cloud-G07`, review lane `cloud-G07`: prior review failed due missing/untrusted verification evidence, and this follow-up must recover exact stdout/stderr from the configured verification environment.

## 구현 체크리스트

- [ ] [REVIEW_API-1] 허용된 원격 검증 환경에서 client transport 필수 검증을 실행하고 실제 stdout/stderr를 기록한다. 실패 시 원인 코드나 테스트를 수정하고 같은 명령을 재실행한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## [REVIEW_API-1] Verification Evidence Recovery

### 문제

`agent-task/m-proto-socket-infrastructure-communication-rail/01_client_transport/code_review_cloud_G07_0.log:110`-`141` records `flutter pub get`, targeted `flutter test`, and `flutter analyze --no-fatal-infos` as `not run`. `agent-test/local/rules.md:9` forbids local testing and says the default verification environment is remote, so the prior implementation cannot be accepted without remote evidence.

### 해결 방법

Run the exact verification commands in the configured remote/allowed verification environment. If any command fails, fix only the failing source, test, or dependency-manifest issue in this subtask, then rerun the same command and record the final stdout/stderr.

Before:

```text
not run: agent-test/local/rules.md forbids local test/verification in the current environment
```

After:

```text
actual stdout/stderr from flutter pub get, targeted flutter test, and flutter analyze
```

If the remote verification environment itself is unavailable for a user-owned reason, do not fake output. Fill the review stub's `사용자 리뷰 요청` with the attempted command, exact blocker evidence, why another follow-up agent cannot resolve it, and the resume condition.

### 수정 파일 및 체크리스트

- [ ] Update `agent-task/m-proto-socket-infrastructure-communication-rail/01_client_transport/CODE_REVIEW-cloud-G07.md` with actual command output.
- [ ] If verification fails, minimally update only affected files under `apps/client/lib/src/integrations/proto_socket/`, `apps/client/test/integrations/`, `apps/client/pubspec.yaml`, or `apps/client/pubspec.lock`.
- [ ] Do not modify `agent-roadmap/**` from this follow-up.

### 테스트 작성

No new tests are planned. Existing tests are the acceptance surface unless a verification failure shows a missing assertion; in that case, add the smallest regression assertion in the existing integration test file that matches the failure.

### 중간 검증

```bash
cd apps/client && flutter pub get
cd apps/client && flutter test test/integrations/proto_socket_endpoint_config_test.dart test/integrations/proto_socket_lifecycle_test.dart test/integrations/proto_socket_envelope_test.dart
cd apps/client && flutter analyze --no-fatal-infos
```

Expected: dependency resolution succeeds; targeted tests pass; analyzer has no fatal issues.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `agent-task/m-proto-socket-infrastructure-communication-rail/01_client_transport/CODE_REVIEW-cloud-G07.md` | REVIEW_API-1 |
| `apps/client/lib/src/integrations/proto_socket/**` | REVIEW_API-1, only if verification fails |
| `apps/client/test/integrations/**` | REVIEW_API-1, only if verification fails |
| `apps/client/pubspec.yaml`, `apps/client/pubspec.lock` | REVIEW_API-1, only if dependency verification fails |

## 최종 검증

```bash
cd apps/client && flutter pub get
cd apps/client && flutter test test/integrations/proto_socket_endpoint_config_test.dart test/integrations/proto_socket_lifecycle_test.dart test/integrations/proto_socket_envelope_test.dart
cd apps/client && flutter analyze --no-fatal-infos
```

Expected: pub get succeeds; targeted tests pass; analyzer has no fatal issues. Cached Flutter test output is acceptable only if no implementation files changed after the run.

모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
