**task-1369.1 완료 보고** (dev1-team) **완료 보고서: dispatch.py opus 모델 강제 적용 + 배너 재실행** (15분 43초) **핵심 결과** `bot_settings.json` 기반 모델 필터링 기능을 `_find_available_bot()`에 추가하여 해결. image-qc-gate 워크플로우 시 자동으로 `--model claude-opus-4-6`을 강제 적용. 기존 테스트 149/149 통과, Batch B/C 재위임 완료. ## 수정 내용 ### dispatch.py 변경 (5개 수정 포인트) 1. **`_read_bot_models()` 신규 함수**: `~/.cokacdir/bot_settings.json`에서 {key_hash: model_name} 맵 반환 2. **`_find_available_bot(required_model)`**: 모델 필터링 파라미터 추가. BOT_TO_DEFAULT_TEAM → TEAM_BOT → BOT_KEYS 역추적으로 봇별 모델 확인 3. **`dispatch()` 함수**: `model` 파라미터 추가, 명시적 model 지정 시 봇 필터링 적용, timer metadata에 model 기록 4. **`_dispatch_composite()` 함수**: 동일 패턴으로 `model` 파라미터 추가 5. **CLI `__main__`**: `--model` 인자 추가, image-qc-gate 시 자동 opus 강제 ### 설계 핵심 판단 - **model_router 추천 vs 명시적 지정 분리**: model_router의 추천은 로깅만 (기존 동작 유지), 봇 필터링은 `--model` 명시 또는 image-qc-gate 자동 적용 시에만 활성화. 이유: model_router가 모든 **발견/해결 이슈 4건** 1. **model_router 추천이 봇 필터링을 과도하게 적용** — 명시적 `model` 파라미터와 model_router 추천을 분리하여 봇 필터링은 명시적 지정 시에만 적용 2. **테스트 환경에서 bot_settings.json 부재로 모델 맵 구축 실패** — `_read_bot_models()` 실패 시 빈 dict 반환으로 graceful fallback 3. **Batch C 위임 시 design팀 충돌** — task-1370.1 이미 running이라 `--force` 플래그로 강제 위임 (별도 봇 bot-d 배정) 4. **test_dispatch_safeguards.py::test_2a_duplicate_description_blocks_dispatch 기존 실패** — 미해결: 범위 외 사유: 중복 description 차단 로직의 기존 버그. 우리 변경과 무관 (model 관련 코드 미포함)