# task-409.1: test_team_prompts.py 실패 4건 수정 + GLM isolation_rule 정합성

## 문제
`tests/test_team_prompts.py`에서 project_id 관련 테스트 4건이 실패 중.
프롬프트 리팩토링(경량화)으로 `_build_direct_prompt()`에서 isolation_rule 섹션이 제거되어
DIRECT-WORKFLOW.md로 위임되었는데, 테스트는 여전히 프롬프트 문자열에서 해당 키워드를 기대하고 있음.

## 실패 테스트 4건

### 1. `TestBuildPromptProjectId::test_no_project_id_contains_system_task_message` (line 224-227)
- **기대**: `project_id=None` + `dev1-team` → 프롬프트에 "시스템 작업" 포함
- **현실**: `_build_direct_prompt()`에 isolation_rule 없음 → 실패

### 2. `TestBuildPromptProjectId::test_project_id_contains_project_path` (line 229-232)
- **기대**: `project_id="myproj"` + `dev1-team` → 프롬프트에 "projects/myproj" 포함
- **현실**: placeholder에 `project_id: myproj`만 있고 `projects/myproj` 경로 없음 → 실패

### 3. `TestBuildPromptProjectId::test_project_id_isolation_rule_present` (line 244-247)
- **기대**: `project_id="sandbox"` + `dev2-team` → "프로젝트 격리" 또는 "projects/sandbox" 포함
- **현실**: 둘 다 없음 → 실패

### 4. `TestBuildPromptOriginal::test_project_id_direct` (line 369-372)
- **기대**: `project_id="myproj"` + `dev1-team` → "projects/myproj" 포함
- **현실**: 없음 → 실패

## 관련 코드 분석

### `_build_direct_prompt()` (line 186-227)
- 경량화 목적으로 설계됨. 핵심 변수만 전달하고 나머지는 DIRECT-WORKFLOW.md 참조.
- `project_id`가 있으면 placeholder에 `- project_id: myproj`만 추가.
- **isolation_rule 섹션 없음** — DIRECT-WORKFLOW.md line 107-108에 있지만, 프롬프트에는 포함 안 됨.

### `_build_glm_prompt()` (line 230-281)
- isolation_rule을 **인라인으로** 포함 (line 246-249):
  - `project_id != None` → "프로젝트 격리" + "projects/{project_id}/"
  - `project_id == None` → "시스템 작업" + "teams/dev3/"
- GLM은 DIRECT-WORKFLOW.md를 사용하지 않으므로 인라인이 맞음.

### DIRECT-WORKFLOW.md (line 107-108)
- "프로젝트 격리" 규칙이 이미 있음 (placeholder 치환 방식: `{WORKSPACE_ROOT}/projects/{project_id}/`)
- "시스템 작업" 규칙도 있음

## 수정 방향

**두 가지 선택지 중 하나를 에이전트 미팅에서 결정:**

### 선택지 A: `_build_direct_prompt()`에 isolation_rule 인라인 추가
- GLM과 동일한 패턴으로 `_build_direct_prompt()`에도 isolation_rule 섹션 추가
- 장점: 테스트 수정 최소화, 프롬프트에 명시적 규칙 포함
- 단점: 경량화 의도에 반함 (DIRECT-WORKFLOW.md와 중복)

### 선택지 B: 테스트를 DIRECT-WORKFLOW.md 참조 방식에 맞게 수정
- direct 팀 테스트: `project_id: myproj` placeholder 존재 여부만 확인
- 실제 isolation 규칙은 DIRECT-WORKFLOW.md에 위임되었으므로 프롬프트에서 검증 불필요
- 장점: 경량화 설계 유지
- 단점: isolation_rule이 프롬프트에 없어 봇이 놓칠 수 있음

### 선택지 판단 기준
- "isolation_rule은 안전 장치" — 봇이 DIRECT-WORKFLOW.md를 무시하고 엉뚱한 경로에 코딩할 리스크가 있다면 선택지 A
- "DIRECT-WORKFLOW.md를 읽으라는 지시가 프롬프트에 있으므로 충분하다"면 선택지 B

## GLM 프롬프트 정합성 확인

`_build_glm_prompt()` (line 246-249)의 isolation_rule:
- `project_id != None`: `projects/{project_id}/` 경로 포함 ✅
- `project_id == None`: `teams/dev3/` 경로 + "시스템 작업" 포함 ✅
- GLM 쪽은 현재 정상이므로 **코드 변경 불필요** — 단, 테스트 통과를 재확인

## 수정 대상 파일
1. `/home/jay/workspace/prompts/team_prompts.py` — 선택지 A라면 `_build_direct_prompt()` 수정
2. `/home/jay/workspace/tests/test_team_prompts.py` — 선택지 B라면 4개 테스트 수정

## 테스트
- `tests/test_team_prompts.py` 전체 통과 (현재 실패 4건 해소)
- 기존 다른 테스트 영향 없음 확인
- pyright 에러 0건
- black + isort OK

## 산출물
- 완료 보고서: `memory/reports/task-409.1.md`

## 작업 레벨: Lv.2
- 에이전트 미팅 선택적 (선택지 결정 필요하므로 미팅 권장)