# Complete - m-agent-readable-repository-refactor/08_adapter_cli_tests

## 완료 일시

2026-07-16

## 요약

CLI adapter의 emitter/session, persistent PTY, Codex app-server 테스트를 실행 모드별 파일로 재배치한 첫 리뷰를 PASS로 완료했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G08_0.log` | `code_review_local_G08_0.log` | PASS | 원본 테스트 본문·Test 수·PTY helper 계약 보존과 Node 회귀 테스트 통과를 확인했다. |

## 구현/정리 내용

- `cli_internal_test.go`, `persistent_execute_blackbox_test.go`, `codex_app_server_internal_test.go`를 삭제하고 emitter/session/workspace, persistent process/terminal/completion, Codex app-server session/events 책임별 테스트 파일로 분리했다.
- package `cli` 공통 fixture와 package `cli_test` PTY helper process를 각각 `cli_test_support_test.go`, `persistent_test_support_test.go`에 유지했다.
- production code, 외부 API, proto, config schema, runtime wire 계약은 변경하지 않았다.

## 최종 검증

- `GOCACHE=/tmp/iop-go-build-cache go test -count=1 ./apps/node/internal/adapters/cli` - PASS; `ok iop/apps/node/internal/adapters/cli 47.112s`.
- `[ "$(GOCACHE=/tmp/iop-go-build-cache go test -list '^Test' ./apps/node/internal/adapters/cli | sed '/^ok[[:space:]]/d' | wc -l)" -eq 173 ]` - PASS; runnable Test 173개.
- `python3 -c "from pathlib import Path; p=Path('apps/node/internal/adapters/cli'); bad=sorted((sum(1 for _ in f.open()),str(f)) for f in p.glob('*_test.go') if sum(1 for _ in f.open())>1000); print(bad); raise SystemExit(bool(bad))"` - PASS; 출력 `[]`.
- `GOCACHE=/tmp/iop-go-build-cache go test ./apps/node/...` - PASS; 모든 Node package 통과.
- HEAD 원본 3개와 새 파일의 정규화 본문/Test 이름 비교 - PASS; package/import 재구성과 섹션 주석 3줄 제거 외 코드 라인 multiset 및 전체 Test 함수명이 동일하다.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
