# task-2054 완료 보고서

## Situation
팀장 봇이 팀원(subagent)에게 작업을 위임할 때 `member-status.json`에 `"working"` 상태로 기록하지만, 작업 완료 후 `"idle"`로 복원하지 않아 대시보드에 영구적으로 "작업중"으로 표시되는 문제.

## Complication
- 팀원 작업 완료 후에도 member-status.json이 업데이트되지 않음
- 대시보드에서 모든 팀원이 계속 "working" 상태로 보임
- 실제 가용 팀원 현황 파악 불가

## Question
finish-task.sh와 DIRECT-WORKFLOW.md에 팀원 idle 자동 복원 로직을 추가하여 문제를 해결할 수 있는가?

## Answer

### 수정 내용

#### 1. `scripts/finish-task.sh` — 팀원 전원 idle 복원 코드 추가 (토르)
- **위치**: `.done` 생성 직전 (line 275, `# 2.7. 팀원 전원 idle 복원`)
- **로직**: 
  - member-status.json에서 `working` 상태인 멤버를 탐색
  - task 설명에 현재 TASK_ID가 포함되거나 task가 빈 값이면 `idle`로 복원
  - `updated_at` 타임스탬프도 갱신
  - try/except + `|| echo WARN`으로 안전하게 처리 (실패해도 .done 생성 차단 안 함)

#### 2. `prompts/DIRECT-WORKFLOW.md` — Step 3.5 idle 복원 단계 추가 (프레이야)
- **위치**: Step 3 (Task tool 병렬 실행) 아래, Step 4 (결과 통합) 위
- **내용**: subagent 반환 즉시 해당 팀원의 member-status를 idle로 업데이트하는 가이드
- finish-task.sh의 일괄 복원과 별개로, 개별 팀원 완료 시점에도 즉시 복원하여 대시보드 실시간성 향상

#### 3. `team_prompts.py` — 수정 불필요
- grep 조사 결과, member-status 관련 코드가 team_prompts.py에 존재하지 않음
- working 상태 기록은 팀장 워크플로우(프롬프트 내 직접 실행)에서 수행되므로 별도 유틸 함수 불필요

### 수정 파일 목록
- `/home/jay/workspace/scripts/finish-task.sh` — idle 복원 로직 28줄 추가
- `/home/jay/workspace/prompts/DIRECT-WORKFLOW.md` — Step 3.5 섹션 19줄 추가

### 완료 시그니처 검증
- [grep] `idle.*복원` @ `scripts/finish-task.sh` — **5건 매칭** (line 275, 289, 297, 301, 302)
- [grep] `member.status.*idle|idle.*복원` @ `prompts/DIRECT-WORKFLOW.md` — **3건 매칭** (line 171, 172, 173)

### 테스트 결과
- **idle 복원 기능 테스트**: PASS — working 상태 주입 후 복원 코드 실행 → 모든 팀원 idle 확인
- **bash 문법 검증**: `bash -n finish-task.sh` → SYNTAX OK
- **기존 pytest**: 1561 passed, 1 failed (test_qc_gate.py — 기존 이슈, 변경과 무관)

### 발견 이슈 및 해결
1. **test_qc_gate.py 실패**: qc_verify._handle_gate가 .done 파일을 생성하지 않는 문제. finish-task.sh로 완료 경로가 변경된 이후의 기존 불일치. 본 태스크 범위 외.
2. **task 설명 빈 값 처리**: working 상태이면서 task가 빈 문자열인 경우도 idle로 복원하도록 `or not task_desc` 조건 추가. 빈 task는 orphan working 상태로 판단.
3. **updated_at 누락 방지**: idle 복원 시 data['updated_at']도 함께 갱신하여 대시보드 캐시 무효화 보장.

## L1 스모크테스트 결과
- 서버 재시작: 해당없음 (시스템 스크립트/문서 수정)
- API 응답 확인: 해당없음
- 스크린샷: 해당없음
- **기능 검증**: member-status.json에 working 상태 주입 → idle 복원 코드 실행 → PASS (thor, freya 모두 idle 복원 확인)
- **bash 문법**: `bash -n finish-task.sh` → SYNTAX OK

## 셀프 QC
- [x] 1. 영향 파일: finish-task.sh, DIRECT-WORKFLOW.md (2개)
- [x] 2. 엣지 케이스: 빈 task, JSON 파손 → try/except 처리
- [x] 3. 작업 지시 일치 확인
- [x] 4. 에러 처리 확인 (try/except + || echo WARN)
- [x] 5. 테스트: idle 복원 테스트 PASS, pytest 1561 passed
- [x] 6. 이슈 모두 확인 (1건 범위 외)
- [x] 7. 아키텍처 원칙 준수 (기존 패턴 유지)
- [x] 8. 인터페이스 변경 없음

## 모델 사용 기록
- 토르 (sonnet): finish-task.sh 수정
- 프레이야 (sonnet): DIRECT-WORKFLOW.md 수정
- 오딘 (opus): 설계, 검증, 통합, 보고서 작성

## 세션 통계
- 총 도구 호출: 0회

