<!-- task=flutter_first_portal_migration/05+01,02,04_portal_wire_contract plan=2 tag=REVIEW_REVIEW_PORTAL_WIRE -->

# Plan - REVIEW_REVIEW_PORTAL_WIRE

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

이 계획은 `code_review_cloud_G08_1.log`의 FAIL 판정을 좁게 수습한다. 구현 마지막 단계에서 `CODE_REVIEW-cloud-G08.md`의 구현 에이전트 소유 섹션을 실제 변경 내용과 검증 출력으로 채운다.

## 배경

두 번째 리뷰에서 Dart proto generation 자체는 재현되었지만, 새 compile guard test가 `node.pb.dart`와 `job.pb.dart`를 import만 하고 대표 message를 instantiate하지 않는 문제가 발견되었다. 계획은 generated proto 전체를 import하고 대표 message를 instantiate하도록 요구했다. 현재 `dart analyze test/iop_wire/generated_proto_import_test.dart`도 unused import 2건으로 실패한다.

## 구현 체크리스트

- [ ] [REVIEW_REVIEW_PORTAL_WIRE-1] generated proto compile guard가 `node.pb.dart`와 `job.pb.dart` 대표 message까지 실제로 instantiate/assert하도록 고친다.
- [ ] 중간 검증과 최종 검증 명령을 실행하고 실제 출력을 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_REVIEW_PORTAL_WIRE-1] compile guard 테스트 완결

문제: `apps/portal/test/iop_wire/generated_proto_import_test.dart:4`와 `apps/portal/test/iop_wire/generated_proto_import_test.dart:5`는 `node.pb.dart`, `job.pb.dart`를 import하지만 실제 `NodeInfo`나 `Job` message를 instantiate/assert하지 않는다. `expect(true, isTrue)`는 meaningful assertion이 아니며 unused import도 남긴다.

해결 방법: 같은 테스트에서 `NodeInfo`와 `Job` 대표 message를 생성하고 필드 값을 assertion한다. `expect(true, isTrue)`는 제거한다. 예를 들어 `NodeInfo()..nodeId = 'node-1'`와 `Job()..jobId = 'job-1'..target = 'fake-cli'`처럼 generated class를 실제로 사용한다.

수정 파일 및 체크리스트:

- [ ] `apps/portal/test/iop_wire/generated_proto_import_test.dart`: `NodeInfo`, `Job` message instantiate/assert를 추가하고 vacuous assertion을 제거한다.

중간 검증:

```bash
cd apps/portal && dart analyze test/iop_wire/generated_proto_import_test.dart
cd apps/portal && flutter test test/iop_wire
```

기대 결과: generated proto compile guard test의 unused import가 사라지고 `test/iop_wire` 테스트가 통과한다.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `apps/portal/test/iop_wire/generated_proto_import_test.dart` | REVIEW_REVIEW_PORTAL_WIRE-1 |
| `CODE_REVIEW-cloud-G08.md` | REVIEW_REVIEW_PORTAL_WIRE-1 |

## 최종 검증

```bash
cd apps/portal && dart analyze test/iop_wire/generated_proto_import_test.dart
cd apps/portal && flutter test test/iop_wire
cd apps/portal && flutter test
git diff --check
```

기대 결과: targeted analyze와 Flutter tests가 통과하고 whitespace 오류가 없다. 모든 코드 변경 완료 후 반드시 `CODE_REVIEW-cloud-G08.md`의 구현 에이전트 소유 섹션을 채운다.
