# dispatch.py 리서치-구현 혼합 감지 가드 추가

## 목표
dispatch.py에서 task 파일 내용을 분석하여, 리서치와 구현이 혼합된 지시서일 경우 WARNING 로그를 출력하는 가드 로직 추가.

## 배경
- task-1106.1 사고: 리서치+구현 한 세션에 몰아넣어 1시간 산출물 0건
- 규칙: `memory/specs/research-impl-separation.md`
- dispatch.py에 이미 `task_type` 파라미터 존재 (coding/research/check)

## 수정 대상
`dispatch.py` — 1개 파일만 수정

## 구현 상세

### 1. 혼합 감지 함수 추가
```python
def _warn_research_impl_mix(task_desc: str, task_type: str) -> None:
    """리서치+구현 혼합 지시서 감지 시 WARNING 로그 출력"""
    research_keywords = ["리서치", "조사", "파악", "현재 상태", "가능한지", "방법 조사",
                         "API 문서", "HTML 구조", "셀렉터", "외부 서비스", "인증 방식", "2FA", "OTP",
                         "research", "investigate", "feasibility"]
    impl_keywords = ["구현", "구축", "코딩", "코드 작성", "테스트 작성", "파이프라인",
                     "implement", "build", "Publisher", "Pipeline"]

    has_research = any(kw in task_desc for kw in research_keywords)
    has_impl = any(kw in task_desc for kw in impl_keywords)

    if has_research and has_impl and task_type != "research":
        logger.warning(
            f"[research-impl-mix] 지시서에 리서치와 구현이 혼합되어 있습니다. "
            f"Phase 분리를 권장합니다. (specs/research-impl-separation.md 참조)"
        )
```

### 2. 호출 위치
`dispatch()` 함수 내부, task_desc 확정 후 위임 실행 전에 호출:
```python
# 기존 코드 중 task_file.write_text(task_desc, ...) 직전 또는 직후
_warn_research_impl_mix(task_desc, task_type)
```

### 3. 동작
- WARNING 로그만 출력. 디스패치를 차단하지 않음 (아누 판단 존중).
- 로그 형식: `[2026-03-27 ...] [WARNING] [__main__] [research-impl-mix] ...`

## 테스트
- `tests/test_dispatch.py`에 테스트 2건 추가:
  1. 리서치+구현 혼합 시 WARNING 출력 확인
  2. 리서치만 또는 구현만일 때 WARNING 미출력 확인
- 기존 테스트 전체 통과 확인

## 산출물
1. 수정된 `dispatch.py`
2. `memory/reports/task-1110.1.md`
