# Task Execution Loop

태스크를 실행할 때 반드시 따라야 하는 루프입니다. 이 절차를 건너뛰지 마십시오.

---

## Loop Sequence

각 태스크마다 다음 순서를 정확히 따르십시오:

1. **Pick:** 첫 번째 미완료 태스크 (`[ ]`) 선택
2. **Execute:** 태스크 실행
3. **Test:** 코드 변경이 있으면 테스트 실행 (아래 Testing 섹션 참조)
4. **Update:** `active_tasklist.md`에서 해당 태스크를 `[x]`로 즉시 업데이트
5. **Report & STOP:** 사용자에게 승인 요청

```
[Task Complete]
- 완료: (task description)
- 진행 상황: X/Y 태스크 완료
- 다음 태스크: (next task description)

다음 태스크를 진행할까요?
```

6. **Wait:** 사용자 승인을 받은 후에만 다음 태스크로 진행

---

## Testing

코드 변경이 포함된 태스크는 반드시 테스트를 통과해야 합니다.

**Manual:** `.ai_context/manuals/test_process.md`

**Code-First 테스트 절차:**

1. **구현:** 기능 코드를 먼저 작성
2. **테스트 작성:** 구현된 코드에 대한 테스트 작성
3. **검증:** 테스트 실행 및 통과 확인

| 상황 | 행동 |
|------|------|
| 테스트 실패 | **구현 코드**를 수정 후 재실행 (테스트 코드 수정 금지) |
| 테스트 통과 | Task list 업데이트 후 승인 요청 |

**테스트가 통과하기 전까지 다음 태스크로 넘어가지 마십시오.**

### Debugging Protocol

테스트가 반복 실패하면:
1. 실패 로그 분석
2. 근본 원인 파악 (환경? 로직? 의존성?)
3. 수정 후 재테스트
4. 3회 이상 실패 시 사용자에게 보고

---

## Refactoring

200라인 이상의 코드 수정이 발생한 태스크는 리팩토링 검토가 필요합니다.

**리팩토링 절차:**

1. **측정:** 태스크에서 수정된 코드 라인 수 확인
2. **판단:** 200라인 이상이면 리팩토링 진행
3. **리팩토링:** 코드 품질 개선 (중복 제거, 함수 분리, 가독성 향상)
4. **검증:** 기존 테스트가 모두 통과하는지 확인

| 상황 | 행동 |
|------|------|
| 200라인 미만 수정 | 리팩토링 생략, 다음 단계 진행 |
| 200라인 이상 수정 | 리팩토링 후 테스트 재실행 |
| 리팩토링 후 테스트 실패 | 리팩토링 코드 수정 후 재테스트 |
| 리팩토링 후 테스트 통과 | Task list 업데이트 후 승인 요청 |

**리팩토링 체크리스트:**

- [ ] 중복 코드가 함수로 추출되었는가?
- [ ] 함수/메서드가 단일 책임을 가지는가?
- [ ] 변수/함수 이름이 명확한가?
- [ ] 불필요한 주석 없이 코드가 자명한가?

**리팩토링 후 테스트가 통과하기 전까지 다음 태스크로 넘어가지 마십시오.**

---

## Strict Rules

**다음 태스크로 절대 넘어가지 마십시오:**
- 테스트가 통과하지 않았다면
- Task list 파일을 업데이트하지 않았다면
- 사용자 승인을 받지 않았다면

---

## Why This Matters

- 태스크 완료 상태가 파일에 기록되지 않으면 휘발됨
- 사용자 승인 없이 진행하면 의도와 다른 방향으로 작업이 진행될 수 있음
- 채팅창에서만 "완료"라고 말하는 것은 기록이 아님
