# Code Review Reference - REFACTOR ## 개요 date=2026-05-04 task=05_cli_persistent_explicit_complete, plan=0, tag=REFACTOR ## 이 파일을 읽는 리뷰 에이전트에게 각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요. 리뷰 완료 후 반드시 아래 순서로 아카이브하세요. 1. `CODE_REVIEW-cloud-G06.md` → `code_review_cloud_G06_N.log` (N = 기존 code_review_*.log 수) 2. `PLAN-local-G06.md` → `plan_local_G06_M.log` (M = 기존 plan_*.log 수) 3. PASS인 경우 `complete.log` 작성 후 종료. WARN/FAIL인 경우 새 routed plan + review 스텁 작성. --- ## 구현 항목별 완료 여부 | 항목 | 완료 여부 | |------|---------| | [REFACTOR-1] CLIProfileConf에 completion_marker 추가 | [ ] | | [REFACTOR-2] persistent 루프에서 마커 매칭으로 명시적 complete | [ ] | | [REFACTOR-3] idle-timeout fallback의 사유 표시 | [ ] | ## 계획 대비 변경 사항 _구현 에이전트가 계획과 다르게 구현한 부분을 이유와 함께 기록한다._ ## 주요 설계 결정 _구현 에이전트가 주요 설계 결정 사항을 기록한다._ ## 리뷰어를 위한 체크포인트 - `CompletionMarkerConf.Empty()`가 line/regex 둘 다 비어 있을 때만 true를 반환하는지 - `newCompletionMatcher`가 잘못된 정규식을 명시 에러로 반환하고, `executePersistent` 진입부에서 `emitRuntimeError`로 보고하는지 - 마커가 없는 프로파일에서 idle-timeout 경로가 그대로 동작하고, `Message == "idle-timeout"`로 emit하는지 - 마커 매칭 시 즉시 종료되며 추가 출력이 emit되지 않는지 (race 단언 포함) - `completion_marker.line` 매칭이 trailing whitespace로 인해 깨지지 않는지(필요 시 trim 정책 명시) ## 검증 결과 _구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다._ ### REFACTOR-1 중간 검증 ``` $ go test ./packages/config/... (output) ``` ### REFACTOR-2 중간 검증 ``` $ go test ./apps/node/internal/adapters/cli/... (output) ``` ### REFACTOR-3 중간 검증 ``` $ go test ./apps/node/internal/adapters/cli/... -run Persistent (output) ``` ### 최종 검증 ``` $ go build ./... $ go test ./... (output) ```