---
task_id: task-2446
type: checklist
scope: task
created: 2026-05-04
updated: 2026-05-04
status: completed
---

# 체크리스트: task-2446

**task**: task-2446 — IDS Phase 0.5 Lite Evaluator 5항목 + JSON Schema

---

## Phase 1 — 사전 게이트 (G1)

- [x] task.md 분석 완료
- [x] Phase 0 SSOT (mapping-tables #5 + target-audience §7) 정독
- [x] 3문서 (plan/context-notes/checklist) 업데이트
- [x] worktree 생성 (`.worktrees/task-2446-design`)
- [x] Codex 사전 검증 PASS (1차 critical=true → 2차 pass=true after 보강)
- [x] Sanitize 게이트 통과 (PII 0건 — 본 task PII 없음)

## Phase 2 — 코드 구현 (디자인 팀)

- [x] A. `scripts/ids/__init__.py` 신규 생성 (25줄)
- [x] B. `scripts/ids/schemas/lite_evaluator_input.schema.json` 신규 생성 (Draft-07, 134줄)
- [x] C. `scripts/ids/lite_evaluator.py` 신규 생성 (868줄)
  - [x] C1. LayoutMeta dataclass + JSON Schema validate 진입
  - [x] C2. mappingVersion 미일치 시 진입 차단 (SSotMismatchError)
  - [x] C3. L1 Contrast (글리프 픽셀 5th/95th percentile + per-glyph LOCAL bg)
  - [x] C4. L2 Margin/Safe-area (6.7%=72px 침범 + SSOT alignment + grid baseline)
  - [x] C5. L3 Hierarchy + Font-size (dq-rules absolute_min=40, 84/64/40, head/sub ratio≥1.3)
  - [x] C6. L4 Color Token (4색 이내 + AI 퍼플 + themePreset 토큰 매칭)
  - [x] C7. L5 Typography (Pretendard / Noto Sans KR 강제 + headline/cta weight≥600)
  - [x] C8. EvalResult overall verdict (PASS/WARN/FAIL)
- [x] D. `tests/scripts/ids/__init__.py` 신규 생성
- [x] E. `tests/scripts/ids/test_lite_evaluator.py` 신규 생성 (432줄, 16개 시나리오)
  - [x] E1. L1 정상/그라데이션/명도 단조 (3건)
  - [x] E2. L2 침범 0/5건 (2건)
  - [x] E3. L3 정상 비율/헤딩=본문 동일 (2건)
  - [x] E4. L4 토큰 일관성 PASS / off-token WARN / AI 퍼플 FAIL (3건)
  - [x] E5. L5 Pretendard PASS / 시스템 fallback FAIL (2건)
  - [x] E6. JSON Schema invalid input + preset enum 진입 차단 (2건)
  - [x] E7. mappingVersion 미일치 진입 차단 (1건)
  - [x] E8. evaluate() E2E 통합 (1건)

## Phase 3 — 검증 (G2)

- [x] py_compile PASS: `python3 -m py_compile scripts/ids/lite_evaluator.py` → exit 0
- [x] JSON Schema 자체 유효성 PASS: `Draft7Validator.check_schema` → exit 0
- [x] pytest PASS: 16/16 시나리오 PASS (1.45s)
- [x] L1 스모크테스트: pytest 실제 실행 + PIL 이미지 합성 + evaluate() 호출 (서버 재시작 N/A — 라이브러리)
- [x] forbidden_paths 위반 0건 (`git diff --cached --name-only` → 13개 금지 경로 미포함)
- [x] 마아트 독립 QC PASS (7개 항목 종합 PASS, FAIL 0)
- [x] Codex G1 2차 검증 PASS (high concerns 4건 모두 보강 완료)

## Phase 4 — 보고서 + 머지 (G3)

- [x] 보고서 작성 (`memory/reports/task-2446.md`) — SCQA + 1:1 매칭표 2종 + L1 알고리즘 정확성 증명 + L1 스모크테스트
- [ ] G3 독립 검증: `python3 scripts/g3_independent_verifier.py --task-id task-2446` → PASS
- [ ] worktree finish --action pr → PR 생성
- [ ] PR 생성 후 ruleset 8 required checks PASS 대기 (봇 자체 머지 금지)
- [ ] 회장 수동 머지 후 .done.acked

## 검증 게이트 요약

- [x] G1 설계 게이트 (Codex pass=true)
- [x] G2 구현 게이트 (Gemini는 PR 생성 시 / 마아트 종합 PASS)
- [ ] G3 머지 게이트 (g3_independent_verifier 다음 단계 + 회장 수동 머지)
