# IDS 후속 정리 통합 — commit/finish-task/E2E ★ Lv.2

## 작업 레벨: Lv.2 (운영 정리 + 실 E2E 검증)

## 회장 명시 (2026-05-03)
"완료했다는 내용들 체크해서 후속작업 진행(커밋 머지 푸시 필요하면 하고, 단 구현완료된 기능 있으면 e2e테스트까지 실제로 진행!!!!)"

## 배경 (사실 매트릭스)
| Task | 산출물 | git | .done | 상태 |
|---|---|---|---|---|
| task-2391 (Phase 2 PPT) | ✅ skills/magazine-ppt-ko/ | ❌ 미커밋 | ❌ | working tree에 산출물 있음 |
| task-2392 (Phase 3 mobile) | ✅ skills/mobile-prototype-ko/ | ✅ commit 1건 | ❌ | finish-task.sh 누락 |
| task-2394 (Phase 6 router) | ✅ skills/ids-router/ 또는 scripts/ | ✅ commit 4건 | ❌ | escalate=`git_evidence FAIL × 3` (false, 환경 이슈) |

## 작업 범위

### Fix 1 — task-2391 산출물 commit
- `cd /home/jay/workspace`
- `git status` → `skills/magazine-ppt-ko/**`, `tests/design-team/test_ids_phase2_*.py` working tree 변경 확인
- `git add skills/magazine-ppt-ko/ tests/design-team/test_ids_phase2_ppt_deck.py`
- `git commit -m "[task-2391] design팀 (후속): magazine-ppt-ko 스킬 + PPT 14 시나리오 commit 누락 보완"`

### Fix 2 — task-2391/2392/2394 finish-task.sh 후속
- task-2391: `bash scripts/finish-task.sh task-2391 "design팀 후속 정리"` 호출
- task-2392: `bash scripts/finish-task.sh task-2392 "design팀 후속 정리"` 호출
- task-2394: escalate.acked 처리 후 finish-task.sh 호출
  - `cp memory/events/task-2394.escalate memory/events/task-2394.escalate.acked` (회장 승인 명시)
  - escalate 사유 `git_evidence FAIL × 3` → 환경 노이즈 false positive (commit 4건 명백 존재)
  - finish-task.sh 정상 호출

### Fix 3 — task-2392 Playwright E2E 실 캡처 (회장 강조 의무)
- `skills/mobile-prototype-ko/scripts/render_prototype.py` 실 호출
- 7 시나리오 × 4 frame (iphone-light/dark, pixel-light/dark) = **28장 PNG** 실 렌더링
- 각 PNG 한글 OCR (pytesseract `--lang=kor`) → 입력 한글 string match **100%**
- FAIL 1건 시 즉시 보고 (silent pass 차단)
- 산출물 위치: `skills/mobile-prototype-ko/outputs/`

### Fix 4 — task-2393/2394 추가 E2E (이미 .done.acked / commit이지만 회장 정의 "진짜 완료" 충족)
- task-2393 motion: 5 mp4 첫·중·끝 프레임 추출 → 각 OCR 100% (이미 보고서에 12 테스트 PASS이지만 실 mp4 재검증)
- task-2394 router: 자연어 입력 5건 → `python3 scripts/ids_natural_routing.py` 실호출 → 라우팅 결과 정확도 ≥ 90%

### Fix 5 — git push (필요시)
- `git push origin main` (worktree 미사용, main 직접 commit 패턴)
- push 후 GitHub 반영 확인

## 회귀 테스트
**파일**: `tests/dev6/test_ids_followup_cleanup.py`

1. task-2391/2392/2394 .done 발급 확인
2. task-2392 28장 PNG 한글 OCR 100% (계층 표본)
3. task-2393 5 mp4 첫·중·끝 OCR 100%
4. task-2394 라우터 5 자연어 케이스 라우팅 정확도
5. silent pass 게이트: 파일 존재 + string match 단독 PASS 금지 회귀

## 검증 시나리오 (회장 4 목표 #1 무오류)
1. 5+/PASS (pytest)
2. **L1 실 E2E**: 28장 PNG + 15 mp4 프레임 OCR 결과 보고서 첨부 (회장 직접 확인 가능)
3. 회귀 0: skills/satori-cardnews/**, resources/design-md/**, dispatch.py 등 forbidden_paths 무수정
4. mypy/pyright 0
5. push 후 GitHub 커밋 hash 보고

## affected_files

### 신규
- `tests/dev6/test_ids_followup_cleanup.py`
- `memory/events/task-2394.escalate.acked` (회장 승인 명시)
- `skills/mobile-prototype-ko/outputs/<scenarios>_<frames>.png` (28장)
- `memory/reports/task-XXXX-ids-followup.md`

### 수정
- 없음 (commit/finish-task은 git 명령만)

### 변경 금지
- `skills/satori-cardnews/**`, `skills/hybrid-image/**`, `skills/frontend-design/**`, `skills/insane-design/**` (코드 영역)
- `skills/magazine-ppt-ko/**`, `skills/mobile-prototype-ko/**`, `skills/motion-cardnews-ko/**` (commit만, 코드 수정 X)
- `skills/ids-router/**` 또는 `scripts/ids_natural_routing.py` (실호출만)
- `resources/design-md/**`
- `dispatch.py`, `scripts/auto_merge.py`, `scripts/done-watcher.py`
- `scripts/whisper-compile.py`, `scripts/session-watchdog.sh`, `scripts/bot_status_resolver.py`
- `scripts/worktree_manager.py`, `scripts/cleanup_stale_task_counter.py`
- `scripts/auto_e2e_gate.py`, `scripts/motion_render_queue.py`, `scripts/ids_phase_monitor.py`
- `teams/shared/**`, `CLAUDE.md`
- `memory/capabilities/**`, `memory/audit/**`, `memory/state/**`, `.github/**`

## allowed_resources
```yaml
allowed_resources:
  paths:
    - "tests/dev6/test_ids_followup_cleanup.py"
    - "memory/events/task-2394.escalate.acked"
    - "skills/mobile-prototype-ko/outputs/**"
    - "memory/plans/tasks/task-XXXX/**"
    - "memory/reports/task-XXXX-ids-followup.md"
  forbidden_paths:
    - "skills/satori-cardnews/**"
    - "skills/hybrid-image/**"
    - "skills/frontend-design/**"
    - "skills/insane-design/**"
    - "skills/magazine-ppt-ko/!(scripts|templates|SKILL.md)"
    - "skills/mobile-prototype-ko/!(outputs)"
    - "skills/motion-cardnews-ko/**"
    - "skills/ids-router/**"
    - "resources/design-md/**"
    - "dispatch.py"
    - "scripts/auto_merge.py"
    - "scripts/done-watcher.py"
    - "scripts/whisper-compile.py"
    - "scripts/session-watchdog.sh"
    - "scripts/bot_status_resolver.py"
    - "scripts/worktree_manager.py"
    - "scripts/cleanup_stale_task_counter.py"
    - "scripts/auto_e2e_gate.py"
    - "scripts/motion_render_queue.py"
    - "scripts/ids_phase_monitor.py"
    - "scripts/ids_natural_routing.py"
    - "teams/shared/**"
    - "CLAUDE.md"
    - "memory/capabilities/**"
    - "memory/audit/**"
    - "memory/state/**"
    - ".github/**"
  commands:
    - "git add"
    - "git commit"
    - "git push"
    - "git status"
    - "git log"
    - "bash scripts/finish-task.sh"
    - "pytest"
    - "python3"
    - "tesseract"
    - "ffmpeg"
    - "ffprobe"
    - "npx playwright"
  merge_policy: "tiered"
  ttl_hours: 12
```

## 작업 원칙
- **있는 그대로 체크** (회장 정의): 추측 금지, gh pr view + git log + 실 OCR 결과만
- **silent pass 차단**: 파일 존재 + string match 단독 PASS 절대 금지
- **회장 4 목표 #1 직접**: 28 PNG + 15 mp4 프레임 OCR 결과로 무오류 입증
- **task-2389 한글 깨짐 패턴 학습**: pytest PASS ≠ 시각 정상. 시각 + OCR 모두 PASS 필수
- 회귀 0 (코드 영역 무수정)

## 운영
- TTL 12h
- 위임: dev6-team (페룬, 방금 task-2394 종료, 자기 작업 후속 자연스러움)
- finish-task.sh 누락 절대 금지

## 참조
- 회장 명시 2026-05-03 "구현완료된 기능 있으면 e2e테스트까지 실제로 진행"
- task-2389 silent corruption 사례 (한글 □□□ 깨짐, pytest PASS)
- IDS plan v1.2 §0.1 (한글 100%), §0.4 (회귀 테스트)
