# worktree_manager.py — 머지 전 main 최신화 강제

## 목적
worktree에서 머지할 때 main 브랜치 최신화를 물리적으로 강제한다.
봇이 규칙을 까먹어도 코드가 강제로 실행하여 다른 팀 작업이 덮어쓰여지는 것을 방지.

## 수정 파일
`/home/jay/workspace/scripts/worktree_manager.py` — `finish` 함수의 `--action merge` 처리 부분

## 현재 동작 (--action merge)
1. worktree에서 변경사항 커밋
2. main 브랜치로 checkout
3. worktree 브랜치를 main에 머지
4. worktree 정리

## 변경 후 동작
1. worktree에서 변경사항 커밋
2. **★ worktree 브랜치에서 `git merge main` 실행 (최신화)**
3. **★ 충돌 발생 시 → 머지 중단 + 에러 메시지 반환 (머지 진행 안 함)**
4. 충돌 없으면 → main 브랜치로 checkout
5. worktree 브랜치를 main에 머지 (이제 안전)
6. worktree 정리

## 구현 상세

```python
# finish 함수 내 --action merge 처리 부분에 추가

# Step 2: main 최신화 (강제)
subprocess.run(["git", "fetch", "origin"], cwd=worktree_path, check=True)
result = subprocess.run(
    ["git", "merge", "main", "--no-edit"],
    cwd=worktree_path,
    capture_output=True, text=True
)
if result.returncode != 0:
    # 충돌 발생 → 머지 중단
    subprocess.run(["git", "merge", "--abort"], cwd=worktree_path)
    print(f"ERROR: main 최신화 중 충돌 발생. 수동 해결 필요.")
    print(f"충돌 파일:\n{result.stdout}")
    sys.exit(1)
```

## --action keep에도 적용
keep 모드(아누 판단 대기)에서도 최신화를 미리 해두면 나중에 머지할 때 충돌 가능성이 줄어듦.
→ keep 시에도 `git merge main` 실행 (선택적)

## 검증 시나리오
1. **정상 머지**: worktree에서 작업 완료 → finish merge → main 최신화 성공 → 머지 완료
2. **충돌 감지**: 다른 팀이 같은 파일을 수정한 상태 → finish merge → 충돌 에러 + 머지 중단 → 봇이 충돌 해결 후 재시도
3. **최신화 후 테스트**: main 코드를 가져온 뒤 테스트가 깨지면 → 봇이 수정 후 재커밋
4. **기존 기능**: --action keep은 기존 동작 유지 (또는 선택적 최신화)
