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

**작성자**: 다그다 (개발3팀장)
**작성일**: 2026-04-20
**검증 레벨**: critical
**프로젝트**: dev-system

---

## S - Situation

task-1990 전수조사에서 Gemini 자동 수정 사이클이 2가지 근본 원인으로 완전히 무기능 상태임이 확인됨. `_auto_fix_high_comments()`는 `claude --print`를 사용하여 파일을 수정하지 않고, Gemini 리뷰 타임아웃 시 자동 수정 루프에 진입조차 하지 않음.

## C - Complication

Gemini PR 리뷰에서 HIGH severity 이슈를 발견해도 자동 수정이 전혀 동작하지 않아, 모든 HIGH 이슈가 수동 대응을 요구하는 상황. 자동화 파이프라인의 핵심 기능이 사실상 비활성 상태.

## Q - Question

`worktree_manager.py`의 2가지 결함을 최소 변경으로 수정하여 Gemini 자동 수정 사이클을 복원할 수 있는가?

## A - Answer

2건 수정 완료. (1) `claude --print` → `claude -p --dangerously-skip-permissions` 교체로 실제 파일 수정 가능, (2) 타임아웃 시 60초 추가 대기 후 1회 재확인으로 리뷰 도착 지연 케이스 커버. 기존 30건 + 신규 7건 = 총 37건 테스트 PASS.

---

## 수정 상세

### 원인 B 수정: `claude --print` → 실제 파일 수정 명령 교체

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| scripts/worktree_manager.py:510 | `["claude", "--print", "-p", combined_prompt]` → `["claude", "-p", combined_prompt, "--dangerously-skip-permissions"]` | grep "dangerously-skip-permissions" OK (1건) | verified |
| scripts/worktree_manager.py:507 | 주석 "실제 수정 모드 (Week 2 이후 활성화)" → "실제 수정 모드 (활성화됨)" | grep "활성화됨" OK | verified |

### 원인 A 수정: 타임아웃 시 Gemini 리뷰 재시도

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| scripts/worktree_manager.py:875-886 | `if not gemini_found and pr_number:` 블록 삽입 — 60초 대기 후 `gh api` 재확인 | grep "gemini-retry" OK (3건) | verified |

### `--print` 완전 제거 확인

| 검증 | 결과 |
|------|------|
| `grep --print worktree_manager.py` | 0건 (완전 제거됨) |

---

## 테스트 결과

| 테스트 파일 | 건수 | 결과 | 비고 |
|------------|------|------|------|
| tests/test_auto_merge.py | 30건 | 30 PASSED | 기존 테스트 회귀 0건 |
| tests/test_worktree_auto_fix_1993.py | 7건 | 7 PASSED | 신규 테스트 |

### 신규 테스트 상세
- TC-1: `--print` 부재, `--dangerously-skip-permissions` 존재, `-p` 존재 (3건)
- TC-2: `collect_mode=True` 시 claude 미호출, `executed=False` (2건)
- TC-3: 소스코드에 `gemini-retry`, `not gemini_found and pr_number` 존재 (2건)

---

## L1 스모크테스트 결과

- 서버 재시작: 해당없음 (스크립트/유틸리티 수정)
- API 응답 확인: 해당없음
- 실제 프로세스 실행: mock 기반 `_auto_fix_high_comments(collect_mode=False)` 호출 → claude 명령 인자 `["claude", "-p", ..., "--dangerously-skip-permissions"]` 확인, `executed=True`, subprocess 5회 호출(claude + git add + git commit + git diff + git push) 정상

---

## 발견 이슈 및 해결

1. **기존 테스트 30건 (보고서에는 35건으로 기술)**: task-1993.md에 "기존 test_auto_merge.py 35건"으로 기술되어 있으나 실제는 30건. 기능 상 문제 아님, 테스트 건수 차이만 존재.
2. **Pyright 진단 이슈**: 신규 테스트 파일에서 `import pytest` 미사용 + `worktree_manager` import 해석 불가 → 미사용 import 제거 + `pyright: ignore` 주석 추가로 해결.
3. **`--dangerously-skip-permissions` 보안 고려**: CI/자동화 환경에서만 사용되며, 인터랙티브 승인 없이 파일 수정이 가능. 의도적 설계 결정.

---

## 산출물 파일

- `/home/jay/workspace/scripts/worktree_manager.py` (수정)
- `/home/jay/workspace/tests/test_worktree_auto_fix_1993.py` (신규)

---

## 모델 사용 기록

| 팀원 | 모델 | 작업 | 정당성 |
|------|------|------|--------|
| 루(백엔드) | sonnet | worktree_manager.py 수정 2건 | 일반 코딩/로직 구현 |
| 모리건(테스터) | sonnet | 신규 테스트 7건 작성 | 테스트 작성 |
| 다그다(팀장) | opus | 설계/분배/검토/통합 | 팀장 판단 업무 |

## QC 검증 결과

- QC Gate: **PASS** (10 PASS, 7 SKIP, 3 WARN)
- 마아트 독립 검증: **PASS** (코드 정합성/테스트/회귀/보고서 전체 PASS)
- full_suite_check: 2388 passed (106.13s)
- signature_check: 3건 전체 PASS

## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회

