Files
novel-writing-guide/validation-standards.md
Alex 271c11d6fc v4.0: Single Source of Truth 시스템 확립
- claude.md.template 추가 (프로젝트별 필수 파일)
- README.md v4.0: Single Source of Truth 핵심 컨셉 추가
- project-structure.md v4.0: claude.md 필수화, standards 제거
- standards 파일들은 Guide/templates/standards/에서만 관리
- 프로젝트별/권별 standards 복사 금지
- 버전 불일치 원천 차단

주요 변경사항:
1. 새 프로젝트 시작 시 claude.md 생성 필수
2. 모든 모드 진입 시 Guide/templates/standards/ 참조
3. 프로젝트 내 standards/ 디렉토리 생성 금지
4. volumes/vol-XX/validation-standards.md 생성 금지

이유: 표준 파일이 여러 곳에 복사되면 버전 불일치 발생
해결: Guide를 유일한 소스로 지정, claude.md로 강제

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 12:41:35 +09:00

1280 lines
37 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1945 소설 검증 기준 문서 (v3.0)
**최종 개정일:** 2026-01-21
**이전 버전:** v2.0 (2026-01-17)
**주요 변경사항:**
- **ch-046 검증 실패 사례 반영:** 빈 섹션 헤더 검출 강화 (섹션 J 신규)
- **ch-047 검증 실패 사례 반영:** 챕터 내부 장면 중복 검증 강화 (섹션 G 대폭 강화)
- **검증 실행 프로토콜 강화:** Step 4에 필수 체크 항목 추가
- **실패 사례 문서화:** 재발 방지를 위한 참조 예시 추가
**목적:** 소설 검증 시 명확한 기준 제시 및 누락 방지
**핵심:** 배치 검증 + 검증 요약본 + 2종 요약본 크로스체크
---
## 📋 검증 모드 분류
### 1⃣ **본문 검증 모드** (Content Validation)
- **대상:** 실제 작성된 챕터 파일 (ch-001.md ~ ch-052.md 등)
- **목적:** 작성된 본문 자체의 완결성 및 일관성 확인
- **플롯 비교:** 하지 않음
- **출력:** 검증 요약본 (validation-batch-XX.md)
### 2⃣ **플롯 검증 모드** (Plot Validation)
- **대상:** 검증 요약본 vs plot-master.md
- **목적:** 계획된 플롯과 실제 작성된 내용의 일치성 확인
- **전제 조건:** 본문 검증 완료 필수
### 3⃣ **요약본 검증 모드** (Summary Validation)
- **대상:** 작성 요약본 vs 검증 요약본
- **목적:** 2종 요약본 크로스체크로 이중 검증
- **전제 조건:** 본문 검증 완료 필수
---
## 🔄 배치 검증 시스템
### 왜 배치로 나누는가?
**문제점:**
- 한 번에 52개 전체 검증 → 중간에 대화 컴팩팅 발생
- 컴팩팅 후 이전 내용 손실 → 검증 결과 신뢰성 저하
**해결책:**
- **10개씩 배치로 나눠서 검증**
- 각 배치마다 결과를 파일로 저장
- 컴팩팅되어도 파일 읽으면 연속성 유지
### 배치 크기
| 범위 | 챕터 수 | 배치 번호 | 파일명 |
|------|---------|----------|--------|
| ch-001 ~ ch-010 | 10개 | 배치 1 | validation-batch-01.md |
| ch-011 ~ ch-020 | 10개 | 배치 2 | validation-batch-02.md |
| ch-021 ~ ch-030 | 10개 | 배치 3 | validation-batch-03.md |
| ch-031 ~ ch-040 | 10개 | 배치 4 | validation-batch-04.md |
| ch-041 ~ ch-050 | 10개 | 배치 5 | validation-batch-05.md |
| ch-051 ~ ch-052 | 2개 | 배치 6 | validation-batch-06.md |
**총 6개 배치**
### 배치 검증 프로토콜
**배치 시작 전:**
```markdown
1. "배치 N 검증 시작합니다" 선언
2. 검증 범위 명시: ch-XXX ~ ch-YYY
3. (N > 1인 경우) 이전 배치 결과 파일 읽기
```
**배치 검증 중:**
```markdown
1. 10개 챕터 순차 검증
2. 중간 결과를 메모리에 누적
3. 문제 발견 시 즉시 기록
```
**배치 완료 후:**
```markdown
1. 검증 요약본 파일 생성: validation-batch-XX.md
2. "배치 N 완료" 선언
3. 다음 배치 진행 여부 확인
```
**컴팩팅 대비:**
```markdown
- 배치 중간에 컴팩팅 발생 가능
- 다음 배치 시작 시 이전 배치 파일 읽으면 복구됨
- 사용자가 "validation-batch-XX.md 읽어봐" 지시 가능
```
---
## 📄 검증 요약본 형식
### 파일명
```
validation-batch-01.md
validation-batch-02.md
...
validation-batch-06.md
```
### 필수 구조
```markdown
# 검증 요약본 - 배치 N
## 메타 정보
- **배치 번호:** N
- **검증 범위:** ch-XXX ~ ch-YYY
- **검증 일시:** YYYY-MM-DD HH:MM
- **검증자:** Claude Sonnet 4.5
## 챕터 상세
### ch-XXX
#### 기본 정보
- **파일명:** ch-XXX.md
- **제목 화수:** N화
- **제목:** [제목 텍스트]
- **타임라인:** YYYY.MM.DD ~ YYYY.MM.DD
- **분량:** XXX줄
#### 주요 이벤트
1. [이벤트 1]
2. [이벤트 2]
3. [이벤트 3]
#### 등장 캐릭터
- **강민준:** (주인공, 회귀자)
- **서윤희:** (여주인공)
- **최태준:** (회귀자, 만주 담당)
- (기타...)
#### 호칭/말투 패턴
- 최태준 → 강민준: "형님" + 존댓말
- 강민준 → 서윤희: "서 선생님" → "서윤희" (변화)
#### 제목-내용 일치
- ✅ 일치 / ❌ 불일치
- 불일치 사유: [...]
#### 🔴 v3.0 필수 검증 항목
- **빈 섹션 검증 (J):** 0건 / N건 (라인 XXX)
- **챕터 내부 중복 검증 (G):** 0건 / N건 (라인 XXX-YYY, N줄 중복)
#### 특이사항
- 중복: 없음 / 있음 (상세)
- 시간 역행: 없음 / 있음 (상세)
- 기타: [...]
---
### (ch-XXX+1 ~ ch-YYY 동일 형식)
---
## 배치 전체 분석
### 타임라인 요약
- **시작일:** YYYY.MM.DD
- **종료일:** YYYY.MM.DD
- **기간:** N개월 / N일
### 주요 플롯 진행
- [이 배치에서 진행된 주요 스토리라인]
### 발견된 문제
#### 제목 관련
| 챕터 | 문제 유형 | 상세 |
|------|----------|------|
| ch-XXX | 화수 불일치 | 파일 006인데 제목 7화 |
| ch-YYY | 제목 중복 | ch-XXX와 동일 제목 |
#### 타임라인 관련
| 챕터 | 문제 유형 | 상세 |
|------|----------|------|
| ch-XXX | 시간 역행 | 이전 챕터보다 날짜 앞섬 |
#### 내용 중복
| 챕터 1 | 챕터 2 | 중복 내용 |
|--------|--------|----------|
| ch-XXX | ch-YYY | [동일한 이벤트] |
#### 캐릭터 일관성
| 챕터 | 캐릭터 | 문제 | 상세 |
|------|--------|------|------|
| ch-XXX | 최태준 | 호칭 변화 | "형님" → "민준씨" |
### 검증 결과
-**통과** - 문제 없음
- ⚠️ **경고** - 경미한 문제 N개
-**실패** - 심각한 문제 N개
### 다음 단계
- 배치 N+1 진행 / 수정 필요 / 완료
```
---
## 📚 2종 요약본 체계
### 작성 요약본 (Writer's Summary)
- **파일:** `summary-001-050.md`
- **작성자:** 사용자 (작가)
- **내용:** 작가가 작성하면서 기록한 진행 상황
- **목적:** 작성 과정 추적
### 검증 요약본 (Validation Summary)
- **파일:** `validation-batch-01.md` ~ `06.md`
- **작성자:** Claude (검증 시)
- **내용:** 실제 본문을 읽고 검증한 결과
- **목적:** 객관적 검증 결과
### 2종 요약본 비교 의미
```
작성 요약본 (주관적) ←→ 검증 요약본 (객관적)
↓ ↓
일치해야 함!
불일치 = 문제 발견
```
**비교 항목:**
1. 챕터 범위 (001-050 vs 실제 작성된 범위)
2. 타임라인 (작성 요약본의 날짜 vs 검증 요약본의 날짜)
3. 주요 이벤트 (요약본에 기록된 내용 vs 실제 본문 내용)
4. 진행도 (로맨스 95% vs 실제 확인된 진행도)
---
## 1⃣ 본문 검증 모드 (상세)
### 검증 대상
```
L:\내 드라이브\Writing\1945-novel\volumes\vol-01\chapters\ch-*.md
```
### 필수 체크 항목
#### A. 파일 구조 검증
| 항목 | 검증 내용 | 방법 |
|------|----------|------|
| 1. 파일 존재성 | 연속된 챕터 파일 존재 확인 | Glob으로 ch-*.md 목록 추출 |
| 2. 번호 연속성 | ch-001 ~ ch-N까지 빠진 번호 없는지 | 파일명 정렬 후 갭 확인 |
| 3. 중복 번호 | 같은 번호의 파일이 2개 이상인지 | 파일명 중복 확인 |
#### B. 제목 검증 (중요!)
각 챕터마다 다음을 확인:
```markdown
# 1권 N화: [제목]
```
| 항목 | 검증 내용 | 오류 예시 |
|------|----------|----------|
| 1. 화수 일치 | 파일명 번호 = 제목 화수 | ch-006.md인데 "# 1권 7화" ❌ |
| 2. 제목 중복 | 다른 챕터와 동일 제목 사용 여부 | ch-006, ch-007 둘 다 "금괴 탈취 작전" ❌ |
| 3. 제목 형식 | "# 1권 N화: [제목]" 형식 준수 | "# 1권 6화 금괴" (콜론 없음) ❌ |
**중복 제목 금지 예외:**
- Part 1, Part 2로 나뉜 동일 이벤트 (예: 상편/하편)
- 이 경우 제목에 명시: "금괴 탈취 작전 (상)", "금괴 탈취 작전 (하)"
#### C. 내용 검증
각 챕터의 **첫 100줄**을 읽고 확인:
| 항목 | 검증 내용 | 확인 방법 |
|------|----------|----------|
| 1. 타임라인 명시 | 날짜가 명확히 표시되어 있는지 | "1945년 9월 6일" 같은 표현 찾기 |
| 2. 주요 이벤트 | 무슨 일이 벌어지는지 파악 | Part 1의 첫 장면 읽기 |
| 3. 제목-내용 일치 | 제목과 실제 내용이 맞는지 | "금괴 탈취"인데 내용이 인민공화국 ❌ |
#### D. 타임라인 검증
전체 챕터의 시간 순서:
| 항목 | 검증 내용 | 오류 예시 |
|------|----------|----------|
| 1. 시간 순서 | 챕터 진행에 따라 시간이 앞으로 가는지 | ch-011 (11.25) → ch-012 (11.1) ❌ |
| 2. 날짜 점프 | 갑작스러운 시간 도약 확인 | 11월 → 12월 중순 (설명 없음) ⚠️ |
| 3. 기간 표시 | 각 챕터가 다루는 기간 명시 | "1946.5.1-5.10" 같은 표현 |
**비선형 구성 예외:**
- 회상, 플래시백은 명확히 표시되어 있어야 함
- 병렬 서사(만주/서울)는 Part로 구분되어야 함
#### E. 캐릭터 일관성 검증
| 항목 | 검증 내용 | 오류 예시 |
|------|----------|----------|
| 1. 호칭 일관성 | 동일 관계에서 호칭 변화 없는지 | 최태준이 "형님" → "민준씨" ❌ |
| 2. 말투 일관성 | 존댓말/반말 패턴 유지 | 강민준이 서윤희에게 갑자기 반말 ❌ |
| 3. 캐릭터 등장 | 처음 등장 시 소개 있는지 | 설명 없이 갑자기 "김미란이" ❌ |
#### F. 중복 내용 검증 (매우 중요!)
**방법:**
1. 모든 챕터의 타임라인 추출
2. 동일 날짜를 다루는 챕터 찾기
3. 동일 이벤트를 다루는 챕터 찾기
**허용되는 중복:**
- 같은 날짜를 **다른 시점**에서 서술 (예: 오전/오후)
- 같은 이벤트를 **다른 캐릭터 시점**에서 서술
**금지되는 중복:**
- 완전히 동일한 내용 반복
- 같은 제목으로 같은 내용
#### G. 챕터 내부 장면 중복 검증 ⭐⭐⭐ (v3.0 대폭 강화)
**중요도:** 🔴 **필수** - v2.0 검증 시 ch-047에서 190줄 중복을 놓침
**검증 방법:**
각 챕터 내에서 같은 장면이 반복되는지 **전체 내용** 확인:
**1단계: 장면 헤더 추출**
```bash
각 챕터의 모든 "## " 헤더 추출
→ 동일한 헤더가 2번 이상 나오는지 확인
→ 예: "## 오후 4시, 종로 다방" (202줄, 392줄 2회 등장)
```
**2단계: 중복 헤더 발견 시 내용 비교**
```bash
같은 헤더 발견 → 해당 섹션 전체 내용 비교
→ 50줄 이상 동일 내용 = 🔴 심각한 중복
→ 10-50줄 동일 내용 = 🟡 중간 중복
→ 10줄 미만 동일 = 🟢 경미한 중복
```
**3단계: 중복 범위 및 심각도 판정**
| 중복 줄 수 | 심각도 | 판정 | 조치 |
|-----------|--------|------|------|
| 100줄 이상 | 🔴 긴급 | 즉시 보고 | 수정 필수 |
| 50-100줄 | 🔴 높음 | 즉시 보고 | 수정 필수 |
| 10-50줄 | 🟡 중간 | 보고 | 수정 권장 |
| 10줄 미만 | 🟢 낮음 | 기록 | 확인 필요 |
**검증 항목:**
| 항목 | 검증 내용 | 오류 예시 |
|------|----------|----------|
| 1. 장면 헤더 중복 | 같은 시간/장소 헤더가 2번 이상 | "## 오후 4시, 종로 다방" (202줄, 392줄) ❌ |
| 2. 대화 내용 중복 | 같은 대화를 여러 번 | "약혼식에 부모님을 모시고 싶어요" 장면 2회 ❌ |
| 3. 서술 내용 중복 | 같은 서술이 반복 | "두 사람은 창가에 앉았다" 동일 문장 2회 ❌ |
| 4. 대규모 장면 중복 | 50줄 이상 동일한 장면 | ch-047: 190줄 완전 중복 ❌ |
**허용되는 반복:**
- 강조를 위한 **의도적 반복** (명확히 표시: "다시 한 번", "앞서 말했듯이" 등)
- 요약/정리를 위한 반복 (명확히 다른 맥락)
- 10줄 미만의 짧은 대화 반복 (다른 장면에서 언급)
**금지되는 반복:**
- 🔴 **작가가 잊고 같은 내용을 또 쓴 경우** (ch-047 사례)
- 🔴 **Part/장면 구분 실수로 중복된 경우**
- 🔴 **50줄 이상의 대규모 중복**
- 🔴 **같은 헤더로 같은 장면을 2번 작성**
**실패 사례 참조:**
```
ch-047.md (2026-01-17 검증에서 놓침)
- 202-254줄: "## 오후 4시, 종로 다방" 장면 (53줄)
- 392-447줄: "## 오후 4시, 종로 다방" 장면 (56줄)
- 총 190줄 분량 완전 중복
- v2.0 검증: "내용 중복: 0건" 보고 (❌ 오판)
- 원인: 장면 헤더 중복 체크 미실행
```
**v3.0 개선사항:**
- ✅ 모든 "## " 헤더 강제 추출 및 비교
- ✅ 중복 헤더 발견 시 내용 전체 비교 필수
- ✅ 50줄 이상 중복 시 즉시 보고 의무화
- ✅ validation-batch-XX.md에 "챕터 내부 중복 체크" 항목 필수 기재
#### H. 인과관계 논리 검증 ⭐ (신규)
**방법:**
챕터 간 인과관계가 논리적으로 맞는지 확인:
| 항목 | 검증 내용 | 오류 예시 |
|------|----------|----------|
| 1. 물건/정보 흐름 | A에서 X를 받았으면 B에서 X를 가지고 있어야 | ch-004에서 명단 받았는데, ch-005에서 또 작성 ❌ |
| 2. 시간 흐름 논리 | 과거 결정이 미래에 반영 | 4화에서 승인했는데 5화에서 또 승인 요청 ❌ |
| 3. 상태 변화 | 상태 변화가 일관성 있게 | 우호적 관계였는데 갑자기 적대적 (이유 없음) ❌ |
**체크 방법:**
1. 전 챕터에서 발생한 사건 목록 작성
2. 현 챕터에서 그 사건이 전제되어 있는지 확인
3. 모순되는 내용이 없는지 확인
#### I. 정보 흐름 검증 ⭐ (신규)
**방법:**
독자가 정보를 순차적으로 받는지 확인:
| 항목 | 검증 내용 | 오류 예시 |
|------|----------|----------|
| 1. 캐릭터 소개 | 첫 등장 시 소개 있는지 | 강세우가 소개 없이 갑자기 "형님" ❌ |
| 2. 관계 형성 | 관계가 점진적으로 발전 | 첫 만남에서 바로 "형님" (과정 없음) ❌ |
| 3. 설정 공개 | 설정이 필요한 시점에 공개 | 배경 설명을 나레이션으로만 (대화 없음) ❌ |
**허용되는 방식:**
- 대화로 자연스럽게 소개: "여 선생님이 소개해주셨습니다. 형님으로 모시라고 하셨습니다."
- 단계적 관계 형성: "강 선생님" → "형님" (시간차)
**금지되는 방식:**
- 나레이션으로만 배경 설명 (캐릭터가 모르는 정보)
- 소개 없이 갑자기 친밀한 호칭
- 설명 없이 갑자기 등장
#### J. 빈 섹션 검증 ⭐⭐⭐ (v3.0 신규 추가)
**중요도:** 🔴 **필수** - v2.0 검증 시 ch-046 빈 섹션을 놓침
**검증 방법:**
각 챕터의 모든 섹션 헤더 뒤에 **실제 내용**이 있는지 확인:
**1단계: 섹션 헤더 추출**
```bash
각 챕터의 모든 "## " 헤더 라인 번호 추출
→ 예: ch-046의 293줄 "## 9월 30일 월요일, 저녁"
```
**2단계: 헤더 이후 내용 확인**
```bash
헤더 라인 이후 최소 3개의 비어있지 않은 줄이 있는지 확인
→ 빈 줄(빈 라인), "---" 구분선은 제외
→ 실제 문장/대화가 있는지 확인
```
**3단계: 빈 섹션 판정**
| 헤더 이후 내용 | 판정 | 심각도 | 조치 |
|---------------|------|--------|------|
| 0줄 (파일 끝) | 빈 섹션 | 🔴 긴급 | 즉시 보고, 수정 필수 |
| 1-2줄만 | 내용 부족 | 🟡 중간 | 보고, 확인 필요 |
| 3줄 이상 | 정상 | 🟢 정상 | - |
**검증 항목:**
| 항목 | 검증 내용 | 오류 예시 |
|------|----------|----------|
| 1. 파일 끝 빈 헤더 | 헤더만 있고 파일 종료 | "## 9월 30일 월요일, 저녁" 이후 내용 없음 ❌ |
| 2. 중간 빈 헤더 | 헤더와 다음 헤더 사이 내용 없음 | "## Part 3" 이후 바로 "## Part 4" ❌ |
| 3. 내용 1-2줄만 | 헤더에 비해 내용 너무 짧음 | "## 12월 1일 아침" 이후 "좋은 아침." 한 문장만 ⚠️ |
| 4. 구분선만 | 헤더 + 구분선만 | "## 오후 2시\n---\n(파일 끝)" ❌ |
**최소 내용 기준:**
- **필수:** 헤더 이후 최소 3줄의 실제 내용 (대화/서술/묘사 등)
- **권장:** 헤더 이후 최소 50자 이상의 텍스트
- **경고:** 헤더만 있고 내용 0-2줄 = 미완성 의심
**허용되는 경우:**
- 짧은 전환 장면 (3줄 이상이면 OK)
- 간략한 일기 항목 (3줄 이상이면 OK)
**금지되는 경우:**
- 🔴 **헤더만 작성하고 내용 미작성** (ch-046 사례)
- 🔴 **헤더 + 구분선만 있고 파일 종료**
- 🔴 **계획만 세우고 실제 작성 안함**
**실패 사례 참조:**
```
ch-046.md (2026-01-17 검증에서 놓침)
- 289줄: "저도요." (마지막 완성된 대화)
- 290줄: (빈 줄)
- 291줄: ---
- 292줄: (빈 줄)
- 293줄: ## 9월 30일 월요일, 저녁
- 294줄: (빈 줄)
- 295줄: ---
- 296줄: (빈 줄)
- 297줄: (파일 끝)
- v2.0 검증: "제목-내용 일치: 52/52 완벽" 보고 (❌ 오판)
- 원인: 헤더 존재만 확인, 헤더 이후 내용 미확인
```
**v3.0 개선사항:**
- ✅ 모든 "## " 헤더 위치(라인 번호) 추출
- ✅ 각 헤더 이후 3줄 내 실제 내용 존재 여부 확인
- ✅ 파일 끝 근처 헤더 특별 주의
- ✅ validation-batch-XX.md에 "빈 섹션 체크" 항목 필수 기재
- ✅ 빈 섹션 발견 시 "내용 미완성" 즉시 보고
**체크 알고리즘:**
```python
for header_line in headers:
content_lines = []
current_line = header_line + 1
# 헤더 이후 10줄까지 체크
for i in range(10):
if current_line >= total_lines:
break # 파일 끝
line = lines[current_line].strip()
# 빈 줄, 구분선 제외하고 실제 내용만 카운트
if line and line != "---":
content_lines.append(line)
current_line += 1
# 실제 내용이 3줄 미만이면 경고
if len(content_lines) < 3:
report_empty_section(header_line, content_lines)
```
---
## 본문 검증 절차 (배치별)
### Step 0: 준비
```bash
1. validation-standards.md 읽기 (이 문서)
2. 검증 범위 확인 (배치 번호)
3. (배치 N > 1) 이전 배치 결과 읽기
```
### Step 1: 배치 시작 선언
```markdown
**배치 N 검증을 시작합니다**
- 범위: ch-XXX ~ ch-YYY
- 예상 챕터 수: 10개
```
### Step 2: 파일 구조 확인
```bash
1. Glob으로 ch-XXX ~ ch-YYY 목록 추출
2. 연속성 확인
3. 총 개수 확인
```
### Step 3: 제목 일괄 추출
```bash
1. 배치 내 모든 챕터의 첫 줄 읽기 (Grep "^# 1권")
2. 제목 테이블 작성
3. 중복 제목 즉시 확인
```
### Step 4: 챕터별 상세 검증 (v3.0 강화)
```bash
각 챕터마다:
1. 전체 파일 읽기 (첫 100줄이 아닌 전체)
2. 타임라인, 이벤트, 캐릭터 파악
3. 제목-내용 일치 확인
🔴 **v3.0 필수 체크 (반드시 실행):**
4. **빈 섹션 검증 (섹션 J):**
- 모든 "## " 헤더 추출
- 각 헤더 이후 3줄 내 실제 내용 확인
- 빈 섹션 발견 시 즉시 보고
- 결과: "빈 섹션: 0건" 또는 "빈 섹션: N건 (라인 XXX)"
5. **챕터 내부 중복 검증 (섹션 G):**
- 모든 "## " 헤더 추출 및 중복 확인
- 중복 헤더 발견 시 내용 비교
- 50줄 이상 중복 시 즉시 보고
- 결과: "챕터 내부 중복: 0건" 또는 "챕터 내부 중복: N건 (라인 XXX-YYY)"
6. 검증 요약본에 기록 (필수 항목 포함)
```
**Step 4 체크리스트 (필수):**
```markdown
각 챕터 검증 완료 시 다음을 확인:
- [ ] 타임라인 확인 완료
- [ ] 주요 이벤트 파악 완료
- [ ] 제목-내용 일치 확인 완료
- [ ] 🔴 빈 섹션 검증 완료 (섹션 J)
- [ ] 🔴 챕터 내부 중복 검증 완료 (섹션 G)
- [ ] 검증 요약본에 모든 항목 기록 완료
```
### Step 5: 배치 전체 분석
```bash
1. 타임라인 순서 확인
2. 중복 검사
3. 캐릭터 일관성 확인
4. 문제점 종합
```
### Step 6: 검증 요약본 파일 생성
```bash
1. validation-batch-XX.md 파일 작성
2. 위의 "검증 요약본 형식" 준수
3. 파일 저장 완료 확인
```
### Step 7: 배치 완료 선언
```markdown
**배치 N 검증 완료**
- 검증 챕터: N개
- 문제 발견: N개
- 결과 파일: validation-batch-XX.md
- 다음: 배치 N+1 진행 / 수정 필요 / 검증 완료
```
---
## 본문 검증 완료 기준
**단일 배치:**
- [ ] 10개 챕터 모두 검증
- [ ] 검증 요약본 파일 생성
- [ ] 문제점 기록 완료
**전체 검증:**
- [ ] 모든 배치 완료 (배치 1 ~ 6)
- [ ] 파일 연속성 확인 (빠진 번호 없음)
- [ ] 제목 화수 = 파일명 번호 (전체 일치)
- [ ] 제목 중복 없음 (예외 제외)
- [ ] 제목-내용 일치 (전체)
- [ ] 타임라인 순서 정상 (역행 없음)
- [ ] 내용 중복 없음 (예외 제외)
- [ ] 캐릭터 호칭/말투 일관성 (A+ 등급)
**본문 검증이 완료되어야만 플롯/요약본 검증 가능!**
---
## 2⃣ 플롯 검증 모드
### 전제 조건
**본문 검증 완료 필수** (6개 배치 모두)
### 검증 대상
```
검증 요약본: validation-batch-01.md ~ 06.md
플롯: plot-master.md
```
### 검증 방법
**플롯 읽지 않고 검증 요약본만 사용:**
```
1. validation-batch-XX.md 읽기
2. 각 챕터의 타임라인, 주요 이벤트 확인
3. plot-master.md의 해당 화와 비교
4. 일치/불일치 기록
```
**장점:**
- 본문을 다시 읽지 않아도 됨
- 검증 요약본이 이미 정리되어 있음
- 빠르고 정확한 비교 가능
### 필수 체크 항목
#### A. 화수 매칭
| 플롯 화 | 예정 제목 | 예정 내용 | 검증 요약본 | 실제 제목 | 실제 내용 | 일치? |
|---------|----------|----------|------------|----------|----------|-------|
| 1화 | 빛 속으로 | 2024→1945 회귀 | ch-001 | 빛 속으로 | 회귀 | ✅ |
| 6화 | 금괴 탈취 | 9.11-20 금괴 | ch-006 | 금괴 탈취 | 인민공화국 | ❌ |
#### B. 내용 일치성
| 항목 | 검증 내용 |
|------|----------|
| 1. 타임라인 일치 | 플롯 예정 날짜 = 검증 요약본 날짜 |
| 2. 주요 이벤트 포함 | 플롯에 명시된 이벤트가 검증 요약본에 있는지 |
| 3. 캐릭터 등장 | 플롯에 명시된 캐릭터가 등장하는지 |
#### C. 누락/추가 확인
| 유형 | 확인 내용 |
|------|----------|
| 누락 | 플롯에는 있는데 검증 요약본에 없는 화 |
| 추가 | 플롯에는 없는데 검증 요약본에 있는 화 |
| 순서 변경 | 플롯 순서와 다르게 작성된 화 |
---
## 플롯 검증 절차
### Step 1: 준비
```bash
1. 본문 검증 완료 확인
2. 모든 검증 요약본 파일 존재 확인
3. plot-master.md 읽기
```
### Step 2: 플롯 목록 추출
```bash
1. plot-master.md에서 1화~51화 추출
2. 각 화의 제목, 타임라인, 주요 내용 정리
```
### Step 3: 검증 요약본 통합
```bash
1. validation-batch-01.md ~ 06.md 읽기
2. 전체 챕터 목록 통합
3. ch-001 ~ ch-052 정리
```
### Step 4: 1:1 매칭
```bash
플롯 1화 vs ch-001 (검증 요약본 참조)
플롯 2화 vs ch-002 (검증 요약본 참조)
...
플롯 51화 vs ch-051 (검증 요약본 참조)
```
### Step 5: 불일치 분석
```bash
1. 누락된 화 목록 작성
2. 추가된 화 목록 작성
3. 내용 변경 사항 분석
```
### Step 6: 보고서 작성
```bash
플롯 검증 보고서 (아래 형식 참조)
```
---
## 3⃣ 요약본 검증 모드
### 전제 조건
**본문 검증 완료 필수**
### 검증 대상
```
작성 요약본: summary-001-050.md (등)
검증 요약본: validation-batch-01.md ~ 06.md
```
### 검증 목적
**2종 요약본 크로스체크:**
```
작가가 기록한 내용 vs 실제 검증 결과
일치 여부 확인
불일치 = 잠재적 문제
```
### 필수 체크 항목
#### A. 범위 일치
| 항목 | 작성 요약본 | 검증 요약본 | 일치? |
|------|------------|------------|-------|
| 챕터 범위 | 001-050 | 001-052 | ❌ (2개 차이) |
| 총 챕터 수 | 50개 | 52개 | ❌ |
#### B. 타임라인 일치
각 챕터마다:
```
작성 요약본의 날짜 = 검증 요약본의 날짜?
```
#### C. 주요 이벤트 일치
```
작성 요약본의 이벤트 목록 ⊆ 검증 요약본의 이벤트 목록
```
**불일치 예시:**
- 작성 요약본: "트랜지스터 개발 (6월)"
- 검증 요약본: "트랜지스터 개발 (3월)"
- → 날짜 불일치 발견!
#### D. 진행도 일치
```
작성 요약본: "로맨스 진행도 95%"
검증 요약본: "로맨스 진행도 35%" (실제 작성 기준)
→ 과대 기록 발견!
```
---
## 요약본 검증 절차
### Step 1: 준비
```bash
1. 작성 요약본 파일 확인 (summary-*.md)
2. 검증 요약본 파일 확인 (validation-batch-*.md)
```
### Step 2: 범위 비교
```bash
1. 작성 요약본: 001-050 (50개)
2. 검증 요약본: 001-052 (52개)
3. 차이: +2개
4. 이유 분석
```
### Step 3: 챕터별 비교
```bash
공통 범위 (001-050) 각 챕터마다:
1. 타임라인 비교
2. 주요 이벤트 비교
3. 캐릭터 등장 비교
4. 불일치 사항 기록
```
### Step 4: 통계 비교
```bash
1. 진행도 비교 (로맨스, 만주, 정치 등)
2. 주요 이벤트 달성도
3. 타임라인 범위
```
### Step 5: 불일치 분석
```bash
1. 경미한 차이 (서술 방식)
2. 중간 차이 (날짜 1-2일)
3. 심각한 차이 (월 단위 차이, 이벤트 누락)
```
### Step 6: 보고서 작성
```bash
요약본 검증 보고서 (아래 형식 참조)
```
---
## 📊 검증 보고서 형식
### 본문 검증 보고서 (배치별)
```markdown
# 본문 검증 보고서 - 배치 N
**검증 일시:** YYYY-MM-DD HH:MM
**검증 범위:** ch-XXX ~ ch-YYY
**검증자:** Claude Sonnet 4.5
## 1. 파일 구조
- 예상 챕터 수: 10개
- 실제 발견: N개
- 연속성: ✅ 정상 / ❌ 빠진 번호: [...]
## 2. 제목 검증
### 화수 일치
| 챕터 | 파일 번호 | 제목 화수 | 일치 |
|------|----------|----------|------|
| ch-001 | 001 | 1화 | ✅ |
| ch-006 | 006 | 7화 | ❌ |
### 제목 중복
| 챕터 1 | 챕터 2 | 제목 |
|--------|--------|------|
| ch-006 | ch-007 | 금괴 탈취 작전 |
## 3. 타임라인 검증
### 시간 순서
| 챕터 | 타임라인 | 이전 대비 | 상태 |
|------|---------|----------|------|
| ch-011 | 1945.11.25 | +1일 | ✅ |
| ch-012 | 1945.11.1 | -24일 | ❌ 역행 |
### 타임라인 범위
- 시작: YYYY.MM.DD
- 종료: YYYY.MM.DD
- 기간: N일 / N개월
## 4. 제목-내용 일치
| 챕터 | 제목 | 실제 내용 | 일치 |
|------|------|----------|------|
| ch-006 | 금괴 탈취 작전 | 인민공화국 선포 | ❌ |
## 5. 중복 내용 (챕터 간)
- 발견: N개
- 목록:
| 챕터 1 | 챕터 2 | 중복 유형 | 상세 |
## 🔴 6. v3.0 필수 검증 항목
### 6-1. 빈 섹션 검증 (섹션 J)
| 챕터 | 빈 섹션 라인 | 헤더 내용 | 심각도 |
|------|-------------|----------|--------|
| ch-046 | 293 | "## 9월 30일 월요일, 저녁" | 🔴 긴급 |
- **총 빈 섹션:** N개
- **🔴 긴급:** N개 (파일 끝 빈 헤더)
- **🟡 주의:** N개 (내용 부족)
### 6-2. 챕터 내부 중복 검증 (섹션 G)
| 챕터 | 중복 라인 범위 | 헤더 내용 | 중복 줄 수 | 심각도 |
|------|---------------|----------|-----------|--------|
| ch-047 | 202-254, 392-447 | "## 오후 4시, 종로 다방" | 190줄 | 🔴 긴급 |
- **총 챕터 내부 중복:** N개
- **🔴 긴급 (50줄 이상):** N개
- **🟡 주의 (10-50줄):** N개
- **🟢 경미 (10줄 미만):** N개
## 7. 캐릭터 일관성
- 등급: A+ / A / B / C / F
- 호칭 일관성: ✅ / ❌
- 말투 일관성: ✅ / ❌
- 문제점: [...]
## 최종 판정
-**통과** - 문제 없음
- ⚠️ **경고** - 경미한 문제 N개
-**실패** - 심각한 문제 N개
## 다음 단계
- [ ] 배치 N+1 진행
- [ ] 문제 수정 필요
- [ ] 전체 검증 완료
```
### 플롯 검증 보고서
```markdown
# 플롯 검증 보고서
**검증 일시:** YYYY-MM-DD
**대상:** plot-master.md vs validation-batch-01~06.md
**검증자:** Claude Sonnet 4.5
## 1. 화수 매칭
### 일치율
- 총 플롯 화수: 51화
- 일치: N개 (N%)
- 불일치: N개 (N%)
### 상세 매칭표
| 플롯 화 | 예정 제목 | 실제 챕터 | 실제 제목 | 일치 |
|---------|----------|-----------|----------|------|
| 1화 | 빛 속으로 | ch-001 | 빛 속으로 | ✅ |
| 6화 | 금괴 탈취 | ch-006 | 금괴 탈취 | ⚠️ 내용 다름 |
## 2. 누락된 화
| 플롯 화 | 예정 제목 | 예정 타임라인 | 예정 내용 | 상태 |
|---------|----------|--------------|----------|------|
| 12화 | 신탁통치 반대 | 1945.12.27 | [...] | ❌ 누락 |
## 3. 추가된 화
| 챕터 | 제목 | 타임라인 | 내용 | 이유 |
|------|------|---------|------|------|
| ch-052 | 폐허의 도쿄 | 1946.12.31 | 일본 시점 | 플롯 51화 예정 |
## 4. 순서 변경
| 플롯 화 | 예정 순서 | 실제 챕터 | 실제 순서 | 이유 |
|---------|----------|-----------|----------|------|
| - | - | - | - | 없음 |
## 5. 내용 변경
| 화 | 플롯 예정 | 실제 작성 | 차이점 |
|----|----------|----------|--------|
| 6화 | 금괴 탈취 (9.11-20) | 인민공화국 (9.6) | 완전히 다른 내용 |
## 최종 판정
-**플롯 일치** - 차이 없음
- ⚠️ **일부 차이** - N개 화 차이, 의도적 변경 가능
-**불일치** - 심각한 차이, 수정 필요
```
### 요약본 검증 보고서
```markdown
# 요약본 검증 보고서 (2종 크로스체크)
**검증 일시:** YYYY-MM-DD
**대상:** 작성 요약본 vs 검증 요약본
**검증자:** Claude Sonnet 4.5
## 1. 범위 비교
### 전체 범위
| 항목 | 작성 요약본 | 검증 요약본 | 차이 |
|------|------------|------------|------|
| 챕터 범위 | 001-050 | 001-052 | +2개 |
| 총 챕터 수 | 50개 | 52개 | +2개 |
### 차이 분석
- ch-051: 약혼 (작성 요약본 누락)
- ch-052: 폐허의 도쿄 (작성 요약본 누락)
- 이유: 작성 요약본 업데이트 안됨
## 2. 타임라인 비교
### 주요 이벤트 타임라인
| 이벤트 | 작성 요약본 | 검증 요약본 | 일치 |
|--------|------------|------------|------|
| 트랜지스터 개발 | 1946.6 | 1946.3 | ❌ 3개월 차이 |
| 이승만 망명 | 1946.3 | 1946.11 | ❌ 8개월 차이 |
| 고백 | 1946.6 | 1946.5 | ❌ 1개월 차이 |
## 3. 주요 이벤트 비교
### 정치
| 이벤트 | 작성 요약본 | 검증 요약본 | 일치 |
|--------|------------|------------|------|
| 좌우합작 출범 | 1946.5.15 | 1946.5.15 | ✅ |
### 경제
| 이벤트 | 작성 요약본 | 검증 요약본 | 일치 |
|--------|------------|------------|------|
| 페니실린 | 있음 | 있음 | ✅ |
| 트랜지스터 | 1946.6 | 1946.3 | ❌ |
### 로맨스
| 이벤트 | 작성 요약본 | 검증 요약본 | 일치 |
|--------|------------|------------|------|
| 고백 | 1946.6 | 1946.5 | ❌ |
| 약혼 | 1946.12.15 | 1946.12.15 | ✅ |
| 진행도 | 95% | 35% | ❌ 과대 기록 |
## 4. 진행도 비교
| 항목 | 작성 요약본 | 검증 요약본 | 차이 |
|------|------------|------------|------|
| 로맨스 진행도 | 95% | 35% | -60% |
| 만주 진행도 | 100% | 100% | 0% |
## 5. 불일치 분석
### 경미한 차이 (1-2일)
- 없음
### 중간 차이 (1-2개월)
- 트랜지스터: 6월 → 3월 (3개월)
- 고백: 6월 → 5월 (1개월)
### 심각한 차이 (3개월 이상)
- 이승만 망명: 3월 → 11월 (8개월)
## 최종 판정
-**일치** - 차이 없음
- ⚠️ **부분 일치** - 경미한 차이 N개
-**불일치** - 작성 요약본 업데이트 필요
## 권장 조치
1. 작성 요약본 전면 재작성
2. 검증 요약본 기준으로 업데이트
3. 타임라인 오류 수정
```
---
## 🚨 검증 실패 시 조치
### 본문 검증 실패
1. **즉시 중단** - 다음 배치로 넘어가지 않음
2. 문제점 상세 보고
3. 사용자에게 수정 방향 문의
4. 수정 후 해당 배치 재검증
### 플롯 검증 실패
1. 차이점 상세 보고
2. 의도적 변경인지 확인
3. 수정 필요 여부 문의
4. 사용자 지시에 따라 조치
### 요약본 검증 실패
1. 불일치 항목 상세 보고
2. 작성 요약본 업데이트 필요성 확인
3. 사용자 지시에 따라 조치
---
## 📌 검증 시 주의사항
### 1. 모드 명확히 구분
- **본문 검증:** 본문만 검증, 플롯 안 봄
- **플롯 검증:** 검증 요약본 vs 플롯
- **요약본 검증:** 작성 요약본 vs 검증 요약본
### 2. 배치 크기 준수
- **10개씩 고정** (마지막 배치 제외)
- 한 번에 많이 하지 말 것
### 3. 파일 저장 필수
- 각 배치마다 validation-batch-XX.md 생성
- 저장 완료 확인 후 다음 배치
### 4. 컴팩팅 대비
- 배치 시작 시 이전 결과 읽기
- 사용자가 "파일 읽어봐" 지시 가능
- 파일 읽고 정신 차리기
### 5. 검증 기준 문서 참조
- 검증 시작 전 이 문서 읽기
- 형식 준수
### 6. 보고서 형식 준수
- 위의 형식 정확히 따르기
- 사용자가 이해하기 쉽게
### 7. 문제 발견 시 즉시 보고
- 배치 끝날 때까지 기다리지 말 것
- 심각한 문제는 즉시 보고
---
## 🎯 검증 완료 체크리스트
### 본문 검증 완료
- [ ] 배치 1 완료 (ch-001~010)
- [ ] 배치 2 완료 (ch-011~020)
- [ ] 배치 3 완료 (ch-021~030)
- [ ] 배치 4 완료 (ch-031~040)
- [ ] 배치 5 완료 (ch-041~050)
- [ ] 배치 6 완료 (ch-051~052)
- [ ] 모든 검증 요약본 파일 생성
- [ ] 전체 문제점 종합
### 플롯 검증 완료
- [ ] 본문 검증 완료 확인
- [ ] 검증 요약본 6개 파일 읽기
- [ ] plot-master.md 읽기
- [ ] 1:1 매칭 완료
- [ ] 누락/추가/변경 분석
- [ ] 플롯 검증 보고서 작성
### 요약본 검증 완료
- [ ] 본문 검증 완료 확인
- [ ] 작성 요약본 읽기
- [ ] 검증 요약본 6개 파일 읽기
- [ ] 2종 요약본 비교
- [ ] 불일치 분석
- [ ] 요약본 검증 보고서 작성
---
## 📚 v3.0 검증 실패 사례 (재발 방지)
### 사례 1: ch-046 빈 섹션 미검출 (2026-01-17)
**문제:**
- **챕터:** ch-046.md "1권 46화: 약혼을 위하여"
- **타임라인:** 1946년 9월 16일 ~ 9월 30일
- **총 라인:** 297줄
- **문제 위치:** 293-297줄
**실제 내용:**
```markdown
289→"저도요."
290→
291→---
292→
293→## 9월 30일 월요일, 저녁
294→
295→---
296→
297→(파일 끝)
```
**v2.0 검증 결과:**
- "제목-내용 일치: 52/52 완벽" ✅ (오판)
- 빈 섹션을 발견하지 못함
**원인 분석:**
1. v2.0은 "헤더가 존재하는가"만 체크
2. "헤더 이후 내용이 있는가"는 체크하지 않음
3. 첫 100줄만 읽어서 파일 끝 문제 발견 못함
**v3.0 개선:**
- ✅ 섹션 J 추가: 빈 섹션 검증
- ✅ 모든 헤더 이후 최소 3줄 내용 확인
- ✅ 전체 파일 읽기 (첫 100줄이 아닌)
- ✅ 파일 끝 근처 헤더 특별 주의
**재발 방지:**
- 모든 배치 검증 시 섹션 J 체크 필수
- validation-batch-XX.md에 "빈 섹션: 0건" 명시 필수
---
### 사례 2: ch-047 챕터 내부 중복 미검출 (2026-01-17)
**문제:**
- **챕터:** ch-047.md "1권 47화: 원산행 계획"
- **타임라인:** 1946년 10월 1일 ~ 10월 15일
- **총 라인:** 약 500줄
- **문제 위치:** 202-254줄, 392-447줄
**실제 내용:**
**첫 번째 장면 (202-254줄, 53줄):**
```markdown
202→## 오후 4시, 종로 다방
203→
204→두 사람은 창가에 앉았다.
205→
206→따뜻한 보리차 향. 밖으로 거리가 보였다.
...
212→"약혼식에... 부모님을 모시고 싶어요."
...
254→"12월 15일이 기다려져요."
```
**두 번째 장면 (392-447줄, 56줄):**
```markdown
392→## 오후 4시, 종로 다방
393→
394→두 사람은 창가에 앉았다.
395→
396→따뜻한 보리차 향. 밖으로 거리가 보였다.
...
402→"약혼식에... 부모님을 모시고 싶어요."
...
444→"12월 15일이 기다려져요."
445→
446→"저도 그렇습니다."
447→
```
**중복 규모:**
- 동일 헤더: "## 오후 4시, 종로 다방"
- 중복 내용: 약 190줄 분량
- 중복 비율: 챕터 전체의 38%
**v2.0 검증 결과:**
- "내용 중복: 0건" ✅ (오판)
- 190줄 대규모 중복을 발견하지 못함
**원인 분석:**
1. v2.0 섹션 G는 "챕터 간 중복"만 체크
2. "챕터 내부 중복"은 체크 항목에 없었음
3. 첫 100줄만 읽어서 392줄의 중복 발견 못함
4. 장면 헤더 추출/비교 프로세스 미실행
**v3.0 개선:**
- ✅ 섹션 G 대폭 강화: 챕터 내부 중복 검증
- ✅ 모든 "## " 헤더 추출 및 중복 확인
- ✅ 중복 헤더 발견 시 내용 비교
- ✅ 50줄 이상 중복 시 즉시 보고
- ✅ 전체 파일 읽기 필수
**재발 방지:**
- 모든 배치 검증 시 섹션 G 체크 필수
- validation-batch-XX.md에 "챕터 내부 중복: 0건" 명시 필수
- 중복 헤더 발견 시 반드시 내용 비교
---
### 교훈 및 원칙
**v2.0의 근본적 문제:**
1. **부분 읽기:** 첫 100줄만 읽음 → 파일 끝, 중간 이후 문제 못 찾음
2. **헤더만 체크:** 헤더 존재 확인만 함 → 헤더 이후 내용 미확인
3. **챕터 간만 체크:** 챕터 간 중복만 봄 → 챕터 내부 중복 놓침
4. **선택적 실행:** 섹션 G, H, I가 있었으나 실제 실행 안됨
**v3.0 개선 원칙:**
1.**전체 읽기:** 모든 챕터 전체 내용 읽기
2.**내용 검증:** 헤더 뿐 아니라 헤더 이후 내용 확인
3.**챕터 내부 검증:** 챕터 내부 중복, 빈 섹션 검증
4.**필수 실행:** Step 4에 필수 체크리스트 명시
**핵심 메시지:**
> "헤더가 있다고 내용이 있는 것이 아니다" (ch-046)
> "챕터 간 중복이 없다고 챕터 내부 중복이 없는 것이 아니다" (ch-047)
---
**이 문서는 검증 시 필수 참조 문서입니다.**
**검증 모드 진입 시 반드시 이 문서를 먼저 확인하세요.**
**배치 검증 + 검증 요약본 + 2종 크로스체크가 핵심입니다.**
**v3.0 필수 사항:**
- ✅ 전체 파일 읽기 (첫 100줄이 아닌)
- ✅ 빈 섹션 검증 (섹션 J) 필수 실행
- ✅ 챕터 내부 중복 검증 (섹션 G) 필수 실행
- ✅ validation-batch-XX.md에 두 항목 결과 필수 기재