---
task_id: task-2428
type: plan
scope: task
created: 2026-05-03
updated: 2026-05-03
status: completed
---

# 계획서: task-2428 — IDS Phase 2+3 실 25장 렌더링

**task**: task-2428
**목표**: task-2421 Phase 0+1 후속. retry_loop ↔ hybrid-image 통합 + 25장 stratified 실 렌더링 + supabase H4 + financial_h4 + 회장 시각 confirm 패키지 산출.
**승인**: 회장님 직접 명시 (2026-05-03) "테스트 결과까지 포함해서 2421+1로 위임"
**근거**: `memory/tasks/task-2428.md` (회장 발언 + 진단 + Phase 정의)

---

## 목표

1. `_render_with_seed` placeholder 제거 → hybrid-image 5 패턴 실제 호출
2. 6축 hint 소비 가능: force_pattern_diversity, force_brand_color, force_pattern_signature, min_font_px, force_korean_font, force_spatial_coherence
3. 25장 stratified PNG 산출 (h1~h5 × v1~v5) + supabase H4 + financial_h4 = 27장
4. quality_evaluator 회귀 테스트 (실 렌더링 25장 + 적대 케이스 5건)
5. 회장 시각 confirm 패키지: 5장 random + supabase + financial 정량 라벨링
6. 회귀 0: task-2389(한글 깨짐) + task-2401(단조) 재발 차단

## 범위

### 포함
- `skills/satori-cardnews/scripts/retry_loop.py` 수정 (placeholder 제거)
- `skills/hybrid-image/patterns/h{1..5}_*.py` 6축 hint 소비 (선택적, 회귀 0)
- `memory/reports/task-2424-evidence-25-stratified-v4/h{1..5}_v{1..5}.png` (25장)
- `memory/reports/task-2424-evidence-25-stratified-v4/h{1..5}_v{1..5}.meta.json` (25건)
- `memory/reports/task-2424-evidence-25-stratified-v4/extras/{supabase_h4,financial_h4}.png` (2장)
- `memory/reports/task-2424-evidence-25-stratified-v4/SUMMARY.md`
- `memory/reports/task-2424-chairman-review-package.md`
- `tests/skills/satori/test_real_render_25.py`

### 제외 (다음 페이즈 이후)
- 회장 직접 시각 confirm 자체 (.done 발급 게이트)
- quality_evaluator.py 수정 (forbidden_paths)
- dq-rules.json 수정 (forbidden_paths)
- 132 design-md 라이브러리 신규 추가

## 위임 계획

- Phase 2-1 retry_loop 통합: **이나리** (hybrid-image 스킬 담당, 패턴 import + 6축 hint 매핑)
- Phase 2-1b 패턴 6축 hint: **이나리** (h{1..5}_*.py 호환 시그니처 확장)
- Phase 2-2 실 렌더링 25장: **벤자이텐** (retry_loop 호출 + meta JSON 산출)
- Phase 2-3 supabase + financial extras: **벤자이텐** (design-md 적용 H4)
- Phase 2-4 회귀 테스트: **카구야** (test_real_render_25.py)
- Phase 3 회장 패키지: **아마테라스** (정량 라벨링 + 체크리스트)
- QC: **마아트** (Q-01~Q-10 100점 PASS) + **로키** (DQ 적대 평가)

## 검증 기준

- 빌드: `python3 -m py_compile skills/satori-cardnews/scripts/*.py skills/hybrid-image/patterns/*.py` → returncode 0
- 렌더: `ls memory/reports/task-2424-evidence-25-stratified-v4/*.png | wc -l` → 25 (+ extras 2)
- 회귀 테스트: `python3 -m pytest tests/skills/satori/test_real_render_25.py -v` → 100% PASS
- SUMMARY 통계: 25장 retry 평균, 패턴별 PASS 분포 기록
- 회귀 0: task-2389(한글 깨짐 0) + task-2401(std_mean ≥ 25.0 25/25)
