---
task_id: task-2083
type: context
scope: task
created: 2026-04-22
updated: 2026-04-22
status: completed
---

# 맥락 노트: task-2083

**task**: task-2083

---

## 결정 근거

### 3 Step Why 자문

1st Why: "왜 이 설계가 필요한가?"
→ UX 설계 없이 기능 구현 시 품질 저하 위험. work-level-system.md에 명시된 brainstorming 규칙이 시스템으로 강제되지 않아 실제 누락 발생 가능 (D-1 항목).

2nd Why: "왜 dispatch.py에서 체크하는게 최선인가?"
→ dispatch는 모든 작업 위임의 단일 진입점(single entry point). 여기서 체크하면 누수 없이 모든 Lv.3+ UX 작업을 포착할 수 있다. Codex 사전 검증에서도 확인: composite 경로 포함 양쪽 적용 필요.

3rd Why: "왜 WARNING이 ERROR보다 나은가?"
→ 운영 유연성 보장. `--skip-brainstorming`으로 긴급 상황 대응 가능. 차단(ERROR)은 운영 장애 유발 가능성 → 충분한 운영 검증 후 전환 예정.

### WARNING vs ERROR 정책 결정
- task 설명 요구사항: WARNING 로그 출력 (차단 아님)
- Codex 리뷰 high risk: "WARNING만이면 게이트 역할 못 함"
- 결정: 현 단계에서는 WARNING으로 시작, 운영 데이터 수집 후 ERROR 전환 검토
- --skip-brainstorming은 WARNING을 억제하여 불필요한 로그 방지

### 별도 함수 vs 기존 함수 확장
- `_check_memory_before_dispatch()`는 team_id, task_desc만 받음
- level, task_id, skip_brainstorming 전달 필요 → 시그니처 변경 시 호출부 전체 수정 필요
- 결정: 별도 `_check_brainstorming_gate()` 함수 추가 (SRP 준수, 기존 코드 영향 최소)

## Codex 사전 검증 결과 (2026-04-22)

- 결과: PASS (risks=6, critical=False)
- 주요 리스크 및 대응:
  1. task_id 자동생성 문제 → brainstorming 체크 시점에서 task_id 이미 존재 확인
  2. WARNING만으로 게이트 역할 부족 → 현 단계 WARNING, 추후 ERROR 전환 검토
  3. 함수 시그니처 문제 → 별도 함수로 분리하여 해결
  4. UX 키워드 오탐 가능성 → 11개 키워드 + lower() 정규화로 최소화

## 참조 자료

- work-level-system.md: `/home/jay/workspace/memory/specs/work-level-system.md` (brainstorming 규칙 L89-97)
- task-2080 보고서: `/home/jay/workspace/memory/reports/task-2080.md` (D-1 항목)
- dispatch.py `_check_memory_before_dispatch()`: L1791-1869
- dispatch.py `dispatch()`: L2516-2534 (시그니처), L2761 (memory check 호출)

## 주의사항

- dispatch.py는 133KB 대형 파일 → offset/limit 분할 읽기 필수
- composite dispatch 경로(L2570)에서도 brainstorming 체크 적용 필요
- 기존 `_check_memory_before_dispatch` 호출 2곳 모두 근처에 brainstorming 체크 추가
