---
task_id: task-2432
type: context
scope: task
created: 2026-05-03
updated: 2026-05-03
status: completed
---

# 맥락 노트: task-2432

**task**: task-2432 — IDS Phase 4 Phase 0

---

## 결정 근거

### [핵심 결정 1] Phase 분리 (A+B+C 동시 X) — 회장 명시 2026-05-03
- 큰 그림: procedural PIL = 회귀 fixture로 격하, Satori/HTML/CSS = 진짜 디자인 렌더러, Lite Evaluator(Phase 0.5) 먼저 정의 → Track A 안전장치
- 동시 진행 시 의존성 미해결로 모든 트랙이 동시 실패 위험. 순차 진행으로 각 게이트 회장 confirm 가능.
- 대안 기각: A+B+C 동시 = "디자인 시스템도 없는데 평가만 추가"되어 평가 → 평가 무한 루프

### [핵심 결정 2] HTML skeleton + Target Audience를 Phase 0 필수로 추가 — 회장 명시 2026-05-03
- 토큰 정의만으로는 "어디에 어떻게 적용되는가" 결정 불가 → 컴포넌트 배치/그리드/safe area까지 정의해야 Phase 0.5 Lite Evaluator가 contrast/safe-area 계산 가능
- 타겟 명시 없이는 "84px headline"이 왜 84px인지 정당화 불가 → 보험 FA 영업 거리 등 근거 연결 필수
- 대안 기각: 토큰만 = "멋있게 만들자"로 회귀 (회장 직접 명시 X)

### [핵심 결정 3] quality_evaluator.py를 회귀 게이트로만 사용 (contrast/hierarchy 검증은 별도 분리) — Codex 사전 검증 발견 (2026-05-03)
- 핵심 사실: 기존 `quality_evaluator.py`의 `check_brand_color_match`는 ΔE와 면적 비율만 측정, **contrast(텍스트-배경 대비)는 측정하지 않음**
- task-2428 회장 평가 "ΔE=0.00 정확해도 색 대비 안 맞음 = 아마추어" 원인 = 이 측정 부재
- 결정: 매핑표 #4에서 quality_evaluator를 PIL fixture 회귀 게이트로 한정, contrast/hierarchy/safe-area는 매핑표 #5 Lite Evaluator로 신규 분리
- 대안 기각: quality_evaluator를 그대로 Lite Evaluator로 쓰면 task-2428 문제 재발

### [핵심 결정 4] Lite Evaluator는 OCR 비의존 fallback 필수 — Codex 사전 검증 발견
- 사실: `check_font_size`/`check_ocr_confidence`는 Tesseract 의존, 환경 부재 시 BLOCKED → 전체 FAIL 처리됨
- 결정: Lite Evaluator 5항목은 PIL/CSS 정적 분석만으로 측정 가능한 항목으로 한정 (contrast 비율, safe-area px, font-size CSS 선언값, 그리드 정렬, 컬러 팔레트 분포)
- OCR 기반 검증은 Phase 2 Full Evaluator로 이관

## 3 Step Why (회장 직접 명시 검증)

### 1st Why: 왜 이 설계(Phase 0 5종 산출물)가 필요한가?
A: task-2428 "ΔE=0.00이어도 색 대비 안 맞음 = 아마추어 수준"이 드러낸 본질적 문제 = 디자인 자산이 코드로 옮겨지긴 했으나 "타겟에게 먹히는 기준"은 어디에도 없음. dq-rules.json 32+ 항목과 노하우 파일이 산재하지만 통합된 매핑/구조/룰이 없어 매번 즉흥 판단으로 회귀. → 매핑표 + skeleton + target audience를 한 번에 정의해야 후속 Phase가 단일 진실원본을 갖는다.

### 2nd Why: 왜 A(통합 매핑+skeleton+target)가 최선의 접근인가?
B: Codex 검증 결과 1) quality_evaluator는 contrast 미측정, 2) OCR 환경 의존, 3) dq-rules는 임계값만 있고 컴포넌트 적용 위치 없음. → 평가 도구만 추가하면 측정 누락이 그대로 남고, 토큰만 정의하면 적용 위치 누락. **매핑표(임계값) + skeleton(적용 위치) + target audience(정당화 근거)가 동시에 있어야 Lite Evaluator가 무엇을 측정해야 할지 결정 가능.** 

### 3rd Why: 왜 B(통합 정의)가 다른 대안(예: 평가 도구 우선 / 토큰 우선 / brainstorming만)보다 나은가?
C: 
- 평가 도구 우선 = 측정 대상 없는 평가, task-2428 재발
- 토큰 우선 = "멋있게 만들자" 회귀, 회장 직접 명시 X
- brainstorming만 = 검증 불가능한 wireframe 누적
→ 통합 정의는 후속 Phase 0.5 (Lite Evaluator 5항목) 작성 시 "skeleton의 어떤 위치에서 어떤 임계값을 검증하는지"가 즉시 결정되어 Phase 0.5가 즉시 시작 가능. 의존성 그래프가 가장 짧음.

**A-B-C 일관성**: ✅ "통합 매핑 → Lite Evaluator 즉시 작성 → task-2428 재발 차단"으로 일관

## Codex 사전 검증 결과 (2026-05-03)

### 실행 결과: FAIL (산출물 미존재 시점)
**중요 인사이트**:
1. `quality_evaluator`는 contrast 미측정 → 매핑표 #4/#5 분리 결정 (위 핵심 결정 3)
2. OCR 환경 의존 → Lite Evaluator는 PIL/CSS 정적만 (위 핵심 결정 4)
3. allowed_resources 자기모순 (read_only_paths vs forbidden_paths) → 운영 해석: read-only 명시 우선 적용
4. placeholder 확정: `task-XXXX` → `task-2432`, `auto` → `task-2432`
5. 보고서 경로: `memory/reports/task-2432-ids-phase0.md` 확정

### 산출물 작성 후 재검증 예정
산출물 5종이 파일로 존재하면 critical 리스크가 해소되어 PASS 가능 → 보고서 작성 직전 재실행

## 참조 자료

- 회장 메모리 ★ `system_governance_4layer.md` (L1~L4)
- 회장 메모리 ★ `feedback_creative_work_principle.md`, `feedback_design_philosophy.md`
- 회장 메모리 ★ `feedback_design_team_routing_v2.md`
- dq-rules.json: 32+ 항목 (font_min_size 40px, headline 84px+, 8pt grid, brand 2-3색)
- 노하우 3종: design-qc-knowhow.md, knowhow-cardnews.md, knowhow-design.md
- 벤치마크 4종: ad-quality-benchmark.md, design-benchmark.md, design-concept-catalog-20.md, hermes-high-difficulty-designs.md
- Brex DESIGN.md: #FF6E2B 오렌지, Cooper Light, H1 48px
- Apple DESIGN.md: #0071e3 (CTA 전용), SF Pro Display H1 56px, negative tracking
- task-2428 회장 평가: "ΔE=0.00 정확해도 색 대비 안 맞음 = 아마추어 수준"

## 주의사항

- **코드 변경 절대 금지**: skills/**, scripts/**, dispatch.py, dashboard/**, teams/shared/**, CLAUDE.md, extension/**, dq-rules.json
- **단일 책임 보존**: Phase 0은 설계 문서만, 코드는 Phase 0.5 별도 task
- **silent fix 금지**: 산출물 5종 회장 검수 통과 후에만 .done
- **추측 금지**: dq-rules.json + 노하우 + design-md 자료 read-only 사실 기반
- **"멋있게 만들자" 금지**: "기준을 코드로 어떻게 표현할 것인가" (회장 직접 명시)
- **PII 마스킹**: 외부 AI(Codex/Gemini) 호출 시 sanitize_text 적용 (해당 없음 — 본 작업은 PII 무관 시스템 설계)
