# task-1993: Gemini 자동 수정 사이클 실제 동작하게 수정

## 배경
task-1990 전수조사에서 발견된 근본 원인 2건 수정.

## ★ 반드시 먼저 읽을 파일 ★
1. `memory/reports/task-1990.md` — 전수조사 보고서 (근본 원인 3건 상세)
2. `scripts/worktree_manager.py` — 수정 대상

## 수정 항목

### 1. `claude --print` → 실제 파일 수정 (원인 B)
- 파일: `scripts/worktree_manager.py` `_auto_fix_high_comments()` 함수 (507-513행 근처)
- 현재: `["claude", "--print", "-p", combined_prompt]` → stdout 출력만, 파일 수정 안 함
- 수정 방안 (택 1):
  - A) `claude -p` (--print 제거) → Claude가 직접 파일 수정
  - B) `claude --print` 응답을 파싱 → Edit/Write로 파일 적용
  - C) Gemini Suggested Change를 `gh api`로 직접 적용 (Accept suggestion)
- **권장: A안** — `--print` 플래그만 제거하면 Claude가 워크트리 내 파일을 직접 수정
- 단, `--dangerously-skip-permissions` 필요 여부 확인
- 수정 후 `git add -A && git commit && git push` 가 실제로 변경 파일을 포함하는지 검증

### 2. 타임아웃 시에도 자동 수정 루프 진입 (원인 A)
- 파일: `scripts/worktree_manager.py` `cmd_finish()` (875행 근처)
- 현재: `if gemini_found and pr_number:` → 타임아웃 시 스킵
- 수정: 타임아웃 시 Gemini 리뷰를 재시도하거나, 일정 대기 후 재확인
  ```python
  # 타임아웃 시 추가 대기 후 재확인
  if not gemini_found and pr_number:
      logger.info("[gemini-retry] 타임아웃 후 60초 추가 대기...")
      time.sleep(60)
      # 재확인
      comments = _parse_gemini_comments(pr_number, owner, repo_name, cwd)
      if comments:
          gemini_found = True
          # 기존 자동 수정 루프 진입
  ```
- 또는: 타임아웃 시에도 `gemini_found=False`에서 끝내지 말고, 별도 후속 체크 스케줄 등록

### 3. 수정 후 통합 테스트
- 기존 test_auto_merge.py 35건 PASS 확인
- 신규 테스트: `_auto_fix_high_comments(collect_mode=False)` 호출 시 실제 파일 수정 확인
- 타임아웃 후 재시도 로직 테스트

## ★★★ 절대 규칙 ★★★
- 기존 worktree_manager.py 기능 깨지면 안 됨
- `claude --print` 제거 시 부작용 확인 (CI 환경에서 인터랙티브 모드 방지)

## 완료 시그니처
- [grep] `claude.*-p.*combined_prompt\|claude.*combined_prompt` @ `scripts/worktree_manager.py`
- [grep] `gemini-retry\|retry.*gemini\|타임아웃.*재확인` @ `scripts/worktree_manager.py`
- [pytest] `tests/test_auto_merge.py`

## 검증 시나리오
1. _auto_fix_high_comments(collect_mode=False) 호출 → 실제 파일 변경 발생
2. Gemini 타임아웃 후 재시도 → 리뷰 감지 성공
3. 기존 35건 테스트 PASS
4. E2E: HIGH 코멘트가 있는 PR → 자동 수정 → push → 재리뷰 → 머지

## 레벨
- critical (시스템 핵심 기능)

## 프로젝트
- dev-system
