# 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에 두 항목 결과 필수 기재