---
task_id: task-2488
type: plan
scope: task
created: 2026-05-08
updated: 2026-05-08
status: completed
---

# 계획서: task-2488 — Phase B cycle_advancer.py dry-run PoC

**task**: task-2488
**목표**: closed loop 자기개선 사이클(`evidence → analyzer → root cause + 다음 task 제안`)을 격리 PoC로 구현. production 0 변경.
**승인**: 회장 2026-05-08 "Phase B cycle_advancer.py dry-run PoC 작성. production 격리, 외부 AI 호출은 mock"
**근거**: `memory/tasks/task-2488.md`, `memory/orchestration/phase_b_integration_items_260507.md`

---

## 목표

1. `tools/poc/cycle_advancer.py` — gap analysis + root cause + 다음 task 제안서 draft 생성
2. dry-run entry로 외부 AI 호출 mock (deterministic)
3. mock fixtures로 task-2485 evidence → task-2486 제안서 draft 회귀 검증
4. 산출물 path: `memory/poc/cycle_advancer/draft-{task_id}-{timestamp}.md`
5. production 경로 0 변경 (scripts/, utils/, teams/, .github/ 미터치)

## 범위

### 포함
- `tools/poc/cycle_advancer.py` (analyzer + proposer 코어)
- `tools/poc/cycle_advancer_dry_run.py` (dry-run CLI entry)
- `tools/poc/cycle_advancer/` (mock adapters, fixtures, output writer)
- `tests/poc/test_cycle_advancer.py` (deterministic 회귀 테스트)
- `memory/poc/cycle_advancer/` (출력 디렉토리)
- mock fixtures: task-2485 / task-2483 / task-2472+1 evidence

### 제외 (다음 페이즈 이후)
- production dispatch.py / task-timer.py / lifecycle classifier 통합 (Phase B 진입 시)
- 실제 외부 AI(Codex/Gemini) 호출 어댑터 (현 단계는 mock only)
- 회장 알림/UI 통합
- .conditions 자동 생성 후속 트리거

## 위임 계획

- 설계 + Codex 사전 검증: **마르둑 (팀장)**
- `tools/poc/cycle_advancer.py` 코어 + dry_run CLI: **엔키 (백엔드)**
- mock fixtures + adapter: **엔키 (백엔드)**
- 회귀 테스트 + deterministic 검증: **닌기르수 (테스터)**
- 통합 검증 + 보고서: **마르둑**

## 검증 기준

- 회귀: `python3 tests/poc/test_cycle_advancer.py` → exit 0, deterministic output 일치
- L1 dry-run: `python3 tools/poc/cycle_advancer_dry_run.py --task-id task-2485 --fixture-dir tools/poc/cycle_advancer/fixtures` → `memory/poc/cycle_advancer/draft-task-2486-*.md` 생성
- Production 격리: `git diff --stat main` → forbidden_paths에 변경 없음
- task-timer.py 미수정: `git diff memory/task-timer.py` → 빈 결과
