# task-1459.1 완료 보고서

## SCQA

**S**: dispatch.py는 팀에 작업을 위임할 때 다양한 사전 검증(injection guard, approval, routing validation, 파일 크기 경고 등)을 수행하지만, 아누의 MEMORY.md에 기록된 ★ 최상위 규칙과 피드백 파일은 참조하지 않는다.

**C**: 디자인 작업을 dev팀에 위임하는 실수가 3회 반복된 이력이 있으며(feedback_design_team_routing_v2.md), dispatch 레벨에서 메모리 기반 경고가 없어 동일 실수 재발 위험이 존재한다.

**Q**: dispatch 실행 전 MEMORY.md ★ 항목과 관련 피드백 파일을 자동 체크하여 위반을 사전 감지할 수 있는가?

**A**: `_check_memory_before_dispatch(team_id, task_desc)` 함수를 dispatch.py에 추가하여, dispatch 실행마다 MEMORY.md ★ 항목 + 디자인 키워드 매칭 + dev팀 위반 감지를 자동 수행한다. 6개 테스트 전체 통과, 기존 167개 테스트 회귀 없음, pyright 에러 0건.

## 작업 내용

### 1. `_MEMORY_BASE_PATH` 상수 추가 (dispatch.py:151)
- 아누의 프로젝트 memory 경로를 모듈 상수로 정의

### 2. `_check_memory_before_dispatch()` 함수 추가 (dispatch.py:1034-1095)
- MEMORY.md에서 ★ 항목 추출
- 각 ★ 항목의 링크된 .md 파일 읽기
- task_desc에서 디자인 키워드 9종 매칭
- 디자인 키워드 발견 시 `feedback_design_team_routing_v2.md` 추가 로드
- info 로그로 체크 결과 기록
- dev팀 + 디자인 키워드 조합 시 WARNING 로그

### 3. dispatch() 함수 내 호출 삽입 (2곳)
- **일반 dispatch 경로** (line 1685): `_warn_research_impl_mix()` 바로 앞
- **composite 분기** (line 1516): `_dispatch_composite()` 호출 직전 (마아트 검증으로 추가)

## 산출물

- `/home/jay/workspace/dispatch.py` (수정)
- `/home/jay/workspace/tests/test_dispatch_memory_check.py` (신규)

## 테스트 결과

- 신규 테스트 6개: **6 passed** (0.10s)
- 기존 dispatch 테스트 167개: **167 passed** (1.02s)
- 회귀: 없음
- pyright: 0 errors, 0 warnings (본 작업 파일 기준)

## 발견 이슈 및 해결

### 자체 해결 (4건)
1. **테스트 pyright: MagicMock 미사용 import** — 불필요한 import 제거
2. **테스트 pyright: ModuleType에 _MEMORY_BASE_PATH 속성 할당 에러** — `setattr()` + type: ignore 적용
3. **테스트 pyright: prompts.team_prompts import 미해결** — 불필요한 import 제거
4. **[마아트 HIGH] composite_teams 경로 memory check 누락** — composite 분기 직전에 `_check_memory_before_dispatch()` 호출 추가 (dispatch.py:1516)

### 범위 외 미해결 (0건)

## 마아트 독립 검증

- 판정: NEEDS WORK → 수정 후 **PASS**
- HIGH 이슈 1건: composite_teams 경로 memory check 누락 → 즉시 수정 완료
- MEDIUM 이슈 1건: composite dispatch 통합 테스트 부재 → 단위 테스트로 핵심 경로 커버 완료, 통합 테스트는 기존 test_dispatch.py에서 간접 검증
- LOW 이슈 1건: 호출 위치가 함수 초입이 아닌 task_desc 변환 후 → 변환 후 체크가 더 정확(의도적 배치)

## QC 자동 검증 결과

- overall: **PASS** (8 PASS, 4 SKIP)
- TRUST 5: T(ested)=PASS, R(eadable)=PASS, U(nified)=PASS, S(ecured)=PASS, T(rackable)=PASS

## 모델 사용 기록

- 루(Lugh, 백엔드): dispatch.py 구현 / sonnet
- 모리건(Morrigan, 테스터): 테스트 작성 / sonnet
- 마아트(Maat, QC): 독립 검증 / sonnet
