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

# 계획서: task-2446 — IDS Phase 0.5 Lite Evaluator 5항목 + JSON Schema 입력 계약

**task**: task-2446
**목표**: Phase 0 SSOT(mapping-tables.md + target-audience.md §7)를 입력 계약으로 받는 Lite Evaluator 5항목과 JSON Schema 강제 검증을 신규 모듈로 구현하고 회귀 테스트 7+ 시나리오 PASS.
**승인**: 회장 / 2026-05-04 / "task.md 수정 금지. 봇은 본 payload만 실행."
**근거**: `memory/tasks/task-2446.md` (단일 payload), `memory/plans/ids-phase4-design-system/{mapping-tables,target-audience}.md` (Phase 0 SSOT)

---

## 목표

신규 5종 산출물을 통해 Phase 0 SSOT 일관성을 코드 레벨로 강제:

1. `scripts/ids/lite_evaluator.py` — 5항목 evaluator (L1~L5) + EvalResult 데이터 구조
2. `scripts/ids/schemas/lite_evaluator_input.schema.json` — LayoutMeta 입력 계약 (Draft-07)
3. `scripts/ids/__init__.py` — 패키지 초기화
4. `tests/scripts/ids/test_lite_evaluator.py` — 7+ 회귀 시나리오 (각 항목별 PASS/WARN/FAIL + Schema 검증 + mappingVersion 미일치)
5. `memory/reports/task-2446.md` — SCQA 보고서 + 1:1 매칭표 + L1 알고리즘 정확성 증명

## 범위

### 포함
- L1 Contrast: 글리프 픽셀 5th/95th percentile (mapping-tables 5-A L1 알고리즘 그대로)
- L2 Margin/Safe-area: 6.7%(72px) 침범 검사 (target-audience §7.3)
- L3 Hierarchy + Font-size: 헤딩/본문 비율 + dq-rules `font_sizes.absolute_min=40`
- L4 Color Token: palette 4색 이내 + AI 퍼플 검출 + dq-rules 토큰 일관성
- L5 Typography: Pretendard / Noto Sans KR 강제 + 자간/행간 dq-rules 부합
- JSON Schema: Draft-07, `mappingVersion` 미일치 시 진입 차단
- mapping #4 분리: 본 task 코드는 mapping #5만, mapping #4 (PIL 회귀 게이트)는 보고서에서 역할 분리만 명시

### 제외 (Phase 1 이후)
- Full Evaluator 10+항목 (5-B F1~F12) — Phase 2
- Tesseract OCR 검증 — Phase 2
- LayoutMeta 자동 추출 (Satori 메타데이터 자동화) — Phase 1
- `quality_evaluator.py` 시그니처 확장 — 본 task forbidden_paths 명시 (Phase 1 별도 task)

## 위임 계획

- **Step A — 코드 구현**: design 팀(아마테라스 직접) — 단일 모듈, 단일 책임. 팀원 분산보다 일관성 유리.
- **Step B — 테스트 작성**: design 팀(아마테라스 직접) — Step A와 강결합.
- **Step C — Codex 사전 검증**: codex_gate_check.py 자동 호출 (Lv.3 의무).
- **Step D — Sanitize 게이트**: 외부 AI 호출 시 PII 마스킹 (본 task는 PII 없음 → 통과).
- **Step E — 마아트 독립 QC**: G2 게이트, 코드 + 테스트 + 보고서 3축 검증.
- **Step F — G3 독립 검증 + PR**: g3_independent_verifier.py + worktree finish --action pr.

## 검증 기준

- A. 파일 존재 + py_compile: `python3 -m py_compile scripts/ids/lite_evaluator.py` → exit 0
- B. JSON Schema 유효: `python3 -c "import json,jsonschema; jsonschema.Draft7Validator.check_schema(json.load(open('scripts/ids/schemas/lite_evaluator_input.schema.json')))"` → exit 0
- C. mapping-tables ↔ 5항목 1:1 매칭표 → 보고서 §matrix-mapping
- D. target-audience §7 SSOT ↔ JSON Schema 1:1 → 보고서 §matrix-ssot
- E. 회귀 테스트 7+ PASS: `pytest tests/scripts/ids/test_lite_evaluator.py -v` → exit 0
- F. PR ruleset 8 required checks PASS 후 머지 (회장 수동 승인 — 봇 자체 머지 금지)
