# Task-518: notify-completion.py .done 파일 경쟁 조건 수정

## 문제
팀 작업 완료 시 notify-completion.py가 1분 뒤 새 아누 세션을 깨우지만, 현재 활성 아누 세션이 이미 .done 파일을 처리(.done.clear로 이동)한 상태. 새 세션이 .done 파일을 읽으려 하면 "File does not exist" 에러 발생. 제이회장님이 대화 중일 때 항상 발생.

## 수정 파일
`/home/jay/workspace/scripts/notify-completion.py`

### 변경 1: build_prompt() 함수 (40행)

현재:
```python
def build_prompt(task_id: str) -> str:
    return f"{task_id} 완료됨. /home/jay/workspace/memory/events/{task_id}.done 확인하고 제이회장님께 보고하라."
```

변경 후 (resilient 프롬프트):
```python
def build_prompt(task_id: str) -> str:
    return (
        f"{task_id} 완료됨. 아래 순서로 확인하라:\n"
        f"1. /home/jay/workspace/memory/events/{task_id}.done 존재 → 읽고 처리 후 .done.clear로 이동\n"
        f"2. .done 없고 {task_id}.done.clear 존재 → 이미 다른 세션에서 처리됨. 추가 보고 불필요.\n"
        f"3. 둘 다 없음 → /home/jay/workspace/memory/reports/{task_id}.md 보고서를 직접 읽고 제이회장님께 보고\n"
        f"어떤 경우든 에러 없이 graceful하게 처리할 것."
    )
```

### 변경 2 (선택적 개선): .done 파일 존재 여부 사전 확인

notify-completion.py의 wake_anu_session() 호출 전에, .done.clear가 이미 존재하면 아누 세션을 깨우지 않도록 가드 추가:

```python
# main() 함수 내, wake_anu_session 호출 전:
done_clear_path = Path(WORKSPACE_ROOT) / "memory" / "events" / f"{args.task_id}.done.clear"
if done_clear_path.exists():
    print(f"[SKIP] {args.task_id}: 이미 처리됨 (.done.clear 존재). 아누 세션 미깨움.")
    return
```

이 가드로 이미 처리된 건은 Opus 세션을 아예 생성하지 않아 토큰 절약.

## 테스트
1. .done 파일 존재 상태에서 notify-completion.py 실행 → 정상 프롬프트 생성 확인
2. .done.clear만 있을 때 → 세션 미생성(스킵) 확인
3. 둘 다 없을 때 → 프롬프트에 보고서 직접 읽기 포함 확인
4. 기존 체인 로직(in_chain 분기) 영향 없음 확인

## 프로젝트 경로
`/home/jay/workspace/` (시스템 코드)

## 작업 레벨: Lv.1
