---
task_id: task-2470
type: plan
scope: task
created: 2026-05-06
updated: 2026-05-06
status: completed
---

# 계획서: task-2470 (= task-2469+1 manual recovery)

**task**: task-2470 (dispatch ID) / task-2469+1 (실행 task ID)
**목표**: PR #35 회장 승인 manual recovery — state transition (FAILED→HUMAN_APPROVED) + taskctl merge 재실행 + done 발행. 코드 변경 0줄.
**승인**: 제이회장님 2026-05-06 "회장 권한으로 manual recovery 1회 승인한다"
**근거**: `memory/events/task-2469.chairman-recovery-approval.txt`

---

## 목표

1. `.tasks/state/task-2469.json`에 manual recovery transition 1건 추가 (FAILED → HUMAN_APPROVED)
2. `taskctl merge task-2469` 재실행 → PR #35 merge 성공
3. `taskctl done task-2469` 발행 → 갱신된 task-2469.done
4. `task-2469+1.done` 발행 (본 manual recovery task)
5. `task-2470.done` 발행 (dispatch ID)
6. 코드 / PR diff 0줄 변경, admin override 0건

## 범위

### 포함
- state transition append (1건)
- taskctl merge / done 호출
- 보고서 작성 (`memory/reports/task-2469+1.md`, `memory/reports/task-2470.md`)
- task-2470 후속 박제 항목 명시 (자동 복구 룰 + pre_push_guard 결함 5건)

### 제외 (다음 페이즈 — 후행 task)
- 자동 복구 룰 코드 구현 (task-2470 후행)
- regression test 추가 (task-2470 후행)
- pre_push_guard.py 결함 수정 (task-2470 후행)
- chairman manual recovery audit 채널 구축 (task-2470 후행)

## 위임 계획

- 본 작업: **오딘 단독** — 코드 변경 0, manual recovery only
- 토르/프레이야/미미르/헤임달: 위임 없음 (코드 작업 부재)

## 검증 기준

- PR #35 state=MERGED: `gh pr view 35 --json state,mergedAt`
- 5a77b554 main ancestor: `git merge-base --is-ancestor 5a77b554 origin/main`
- task-2469 state=DONE: `python3 scripts/taskctl.py status task-2469`
- task-2469.done 갱신 + .escalated 부재
- task-2469+1.done 존재
- task-2470.done 존재 (finish-task.sh 경유)
- 코드/PR diff 0줄
