<!-- task=10_bin_e2e_smoke plan=4 tag=REVIEW_REVIEW_REVIEW_REVIEW_BES -->

# 10 Bin E2E Smoke Follow-up Plan - REVIEW_REVIEW_REVIEW_REVIEW_BES

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

이 plan은 real profile 검증 결과의 재현성/기록 신뢰도 문제를 수정한다. 현재 스크립트는 failure marker를 잘 잡지만, active review가 기록한 `IOP_E2E_PROFILE=gemini make test-e2e` PASS 결과가 리뷰 재실행에서 FAILED로 바뀌었다.

구현 마지막에는 반드시 `CODE_REVIEW-cloud-G07.md`의 모든 구현 소유 섹션을 실제 구현 내용과 명령 출력으로 채운다. 검증 출력에는 `...`를 쓰지 않는다.

## 배경

리뷰 중 `IOP_E2E_PROFILE=gemini make test-e2e`를 재실행한 결과 Gemini foreground run이 `[node-event] error run_id=...`를 만들었고, 스크립트는 이를 잡아 `Real profile (gemini) status: FAILED`와 `Smoke test FAILED`를 출력하며 exit 1로 종료했다. 이는 실패 은폐가 아니라 정직한 실패지만, active review에는 같은 명령이 PASSED로 기록되어 있어 verification trust가 깨졌다.

## 구현 체크리스트

- [ ] [REVIEW_REVIEW_REVIEW_REVIEW_BES-1] real profile 검증 결과를 현재 재현 가능한 stdout/stderr로 갱신한다.
- [ ] [REVIEW_REVIEW_REVIEW_REVIEW_BES-2] real profile PASS가 필요하면 deterministic 성공 경로를 만들고 재실행으로 확인한다.
- [ ] [REVIEW_REVIEW_REVIEW_REVIEW_BES-FINAL] `CODE_REVIEW-cloud-G07.md`의 구현 소유 섹션을 모두 채운다.

## [REVIEW_REVIEW_REVIEW_REVIEW_BES-1] real profile 기록 정직성 복구

### 문제

`CODE_REVIEW-cloud-G07.md`는 real profile 검증이 PASSED라고 기록했지만, 동일 명령 재실행은 FAILED였다. 리뷰 파일이 현재 환경의 실제 결과와 맞지 않는다.

### 해결 방법

- `IOP_E2E_PROFILE=gemini make test-e2e`를 재실행한다.
- 실패하면 실패 stdout/stderr 전체를 붙이고 결과를 FAILED로 기록한다.
- 외부 CLI/계정/provider 상태로 실행 불가하면 BLOCKED로 기록한다.
- 검증 결과에는 `...`를 쓰지 않는다.

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

- [ ] `agent-task/10_bin_e2e_smoke/CODE_REVIEW-cloud-G07.md`

### 테스트 결정

실제 출력 기록 자체가 완료 기준이다.

### 중간 검증

```bash
IOP_E2E_PROFILE=gemini make test-e2e
```

## [REVIEW_REVIEW_REVIEW_REVIEW_BES-2] deterministic real profile 성공 경로 검토

### 문제

현재 real profile smoke는 외부 LLM이 `ping` 같은 입력을 어떻게 처리하는지에 따라 `node-event error`가 날 수 있다. PASS가 목표라면 prompt/profile 설계를 더 deterministic하게 만들어야 한다.

### 해결 방법

- PASS를 목표로 하면 real CLI가 안정적으로 성공하는 프롬프트를 사용한다. 예: 단순 인사보다 명시적 작업 형태의 짧은 지시를 사용하고, tool loop가 불필요한 내용을 피한다.
- real profile의 실패를 허용하는 정책이면 PASS로 표시하지 말고 FAILED/BLOCKED로 명확히 기록한다.
- 어떤 정책이든 `CODE_REVIEW-cloud-G07.md`의 구현 완료 여부와 검증 결과가 실제 command exit status와 일치해야 한다.

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

- [ ] `scripts/e2e-smoke.sh` (필요한 경우)
- [ ] `agent-task/10_bin_e2e_smoke/CODE_REVIEW-cloud-G07.md`

### 테스트 결정

선택한 정책에 따라 `IOP_E2E_PROFILE=gemini make test-e2e` 결과가 review file의 PASS/FAILED/BLOCKED 표기와 일치해야 한다.

### 중간 검증

```bash
IOP_E2E_PROFILE=gemini make test-e2e
```

## 수정 파일 요약

| 파일 | 항목 |
|---|---|
| `agent-task/10_bin_e2e_smoke/CODE_REVIEW-cloud-G07.md` | REVIEW_REVIEW_REVIEW_REVIEW_BES-1, REVIEW_REVIEW_REVIEW_REVIEW_BES-FINAL |
| `scripts/e2e-smoke.sh` | REVIEW_REVIEW_REVIEW_REVIEW_BES-2 (필요한 경우) |

## 최종 검증

```bash
go test -count=1 ./...
make test-e2e
IOP_E2E_PROFILE=gemini make test-e2e
```

real profile이 FAILED/BLOCKED라면 그 exit status와 실제 stdout/stderr를 그대로 기록한다. PASS로 표시하려면 재실행에서도 PASS해야 한다.
