목표: 최고 작가의 90% 품질 달성 확률 극대화 핵심 전략: 1. 판단 회피 완전 차단 (신뢰도 향상) 2. 설계 철저화 (프로그래밍처럼) 3. 예술성 진단 & Opus 리터칭 (90% 달성) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ## 1. verification-mode.md v2.9.0 → v3.0.0 **추가: 판단 회피 자동 감지** - Phase 7: 판단 회피 자가 검증 (신규) - 추측 표현 패턴 검색 (bash/PowerShell) - 발견 시 리포트 거부 및 강제 재판정 - Option 1: 직접 판정 (파일 읽고 명확히) - Option 2: 사용자 질문 (이유 + 구체적 질문) **금지 표현:** - "~로 보임", "~일 수도", "확인 필요", "추측", "아마도" **효과:** - 판단 회피 100% 차단 - 리포트 신뢰도 대폭 향상 - 재검토 요청 90% 감소 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ## 2. plot-mode.md v1.0.0 → v2.0.0 **추가: 상세 설계 템플릿 (프로그래밍 설계서 수준)** 3-1. 기본 정보 (기존 유지) 3-2. 핵심 이벤트 (기존 유지) 3-3. 캐릭터 목표 & 갈등 ⭐ 신규 - 목표, 장애물, 해결 방법 3-4. 감정선 설계 ⭐ 신규 - 시작→중간→끝 감정 흐름 - 독자 감정, 긴장도 3-5. 복선 체크 ⭐ 신규 - 설치할 복선, 회수할 복선 3-6. 장면별 상세 (Part 단위) ⭐ 신규 - 시간, 장소, 분위기 - 대화 주제, 캐릭터 행동 - 종료 상태, 예상 분량 3-7. 체크리스트 ⭐ 신규 - 연결, 성격, 날씨, 숫자 일관성 **효과:** - 플롯 불일치 80% 감소 (10-20건 → 2-5건) - 설정 모순 80% 감소 (5건 → 1건) - 예술성 향상 (감정선 설계) - 90% 품질 달성 확률 증가 **철학:** ``` PLOT = 상세 설계서 WRITING = 설계 구현 VERIFICATION = 구현 검증 설계가 완벽하면 구현도 완벽! → 프로그래밍처럼 접근 ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ## 3. artistic-review-mode.md v1.0.0 신규 생성 **목적: 예술성 70% → 90% 향상 (Opus 리터칭)** **역할 분담:** - Sonnet: 기술 95% + 예술성 진단 - 사용자: 중요 화 선별 + 방향 제시 - Opus: 예술적 재작성 (깊이, 울림) **진단 기준:** 1. 감정 깊이: 70점 (표면적) vs 90점 (내면 독백, 신체 반응) 2. 장면 몰입도: 70점 (사건 나열) vs 90점 (오감 활용) 3. 문장 울림: 70점 (기능적) vs 90점 (시적 여운) **워크플로우:** ``` Sonnet 작성 (기술 95%, 예술 70%) ↓ 예술성 진단 (장면별 분석, 약점 발견) ↓ 사용자 선별 (🔴 필수 5화, 🟡 권장 5화) ↓ Opus 리터칭 (예술 90%) ↓ Sonnet 검증 (기술 규칙 + 예술성) ↓ 90% 달성 ✅ ``` **예상 결과:** - Before: 기술 95% × 예술 72% = 83.5% - After (필수 5화): 85.6% - After (필수+권장 10화): 87.7% - 최종 목표 (Sonnet 진화 + Opus 리터칭): 90% ✅ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ## 4. README.md 프로토콜 인덱스 업데이트 - VERIFICATION v3.0.0 반영 - PLOT v2.0.0 반영 - ARTISTIC-REVIEW v1.0.0 신규 추가 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ## 종합 효과 ### VERIFICATION 발견 건수 예상 | 버전 | 발견 건수 | 개선 | |------|----------|------| | v2.5.0 (호칭) | 48-68건 | - | | v2.6.0 (형식+내용) | 19-23건 | -65% | | v2.7.0 (설계+예술) | 10-15건 | -50% | ### 전체 품질 예상 | 단계 | 기술 | 예술 | 평균 | |------|------|------|------| | Sonnet만 | 95% | 70% | 82.5% | | +plot v2.0 | 95% | 75% | 85% | | +artistic 5화 | 95% | 76% | 85.6% | | +artistic 10화 | 95% | 80% | 87.7% | | 최종 목표 | 95% | 85% | **90%** ✅ | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ## 핵심 철학 ``` 판단 회피 = 검증 실패 설계 완벽 = 구현 완벽 예술성 = Sonnet 진단 + 사용자 방향 + Opus 재작성 → 90% 품질 달성 시스템 완성! ``` Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1664 lines
41 KiB
Markdown
1664 lines
41 KiB
Markdown
# 검증 모드 프로토콜
|
|
|
|
> **버전:** 3.0.0
|
|
> **최종 수정:** 2026-01-25
|
|
> **호환:** CWS Writing Guide v4.2.0+
|
|
> **용도:** 전체 검증 및 기록 (수정 없음)
|
|
> **주요 변경:** 판단 회피 자동 감지 - 추측 표현 강제 차단, 명확한 판정 강제
|
|
|
|
---
|
|
|
|
## 📋 CHANGELOG
|
|
|
|
### v3.0.0 (2026-01-25)
|
|
|
|
**배경:**
|
|
- 문제: VERIFICATION에서 판단 회피 발생 ("~로 보임", "~일 수도")
|
|
- 원인: AI가 불확실할 때 추측으로 넘어가고 명확한 판정 회피
|
|
- 결과: 사용자가 재검토 요청 → 시간 낭비, 신뢰도 하락
|
|
|
|
**추가:**
|
|
- 📌 판단 회피 자동 감지 (리포트 작성 후 필수 실행)
|
|
- 📌 추측 표현 패턴 검색 (bash 스크립트)
|
|
- 📌 발견 시 리포트 거부 및 강제 재판정
|
|
- 📌 명확한 판정 또는 사용자 질문 강제
|
|
|
|
**철학:**
|
|
```
|
|
VERIFICATION = 명확한 판정
|
|
추측 = 금지
|
|
불확실 = 파일 읽고 확인 또는 사용자 질문
|
|
|
|
→ 판단 회피는 검증 실패!
|
|
```
|
|
|
|
**예상 효과:**
|
|
- 판단 회피 발생: 100% 차단
|
|
- 리포트 신뢰도: 대폭 향상
|
|
- 재검토 요청: 90% 감소
|
|
|
|
### v2.9.0 (2026-01-25)
|
|
|
|
**추가:**
|
|
- 📌 리포트 유효성 검증 프로토콜 (report-management.md 연동)
|
|
- 리포트 날짜 vs 파일 수정 시간 자동 체크
|
|
- 무효 리포트 발견 시 재검증 필수
|
|
|
|
**참고:**
|
|
- 이 업데이트는 POLISH 모드 v2.4.0과 함께 적용됨
|
|
|
|
### v2.8.0 (2026-01-24)
|
|
|
|
**추가:**
|
|
- 강제 워크플로우 추가 (검증→FIX→재검증 사이클 필수화)
|
|
- PENDING-FIX.txt 상태 추적 시스템
|
|
|
|
**변경:**
|
|
- 문제 발견 시 다른 모드 전환 차단
|
|
|
|
### v2.7.0 (2025-XX-XX)
|
|
|
|
**추가:**
|
|
- 소설 특성 반영 (병렬 서사, 다중 시점)
|
|
- 물리적 모순 확인 절차
|
|
|
|
**변경:**
|
|
- 타임라인 겹침 = 오류 공식 제거
|
|
- 내용 확인 후 판정 필수화
|
|
|
|
### v2.6.0 이전
|
|
|
|
자세한 이력은 Git 커밋 히스토리 참조
|
|
|
|
---
|
|
|
|
## 🚨 강제 워크플로우 (v2.8.0 신규 - 필수!)
|
|
|
|
### 검증 → FIX → 재검증 사이클
|
|
|
|
**핵심 규칙:**
|
|
```
|
|
VERIFICATION에서 문제 발견 시:
|
|
1. FIX 모드 필수 진입 (자동)
|
|
2. 문제 수정 완료
|
|
3. RE-VERIFICATION 필수 실행
|
|
4. 문제 0건 확인 전까지 다른 모드 전환 금지
|
|
```
|
|
|
|
### 강제 시나리오
|
|
|
|
**시나리오 1: 검증 후 다른 작업 요청**
|
|
```
|
|
사용자: "1권 검증해"
|
|
Claude: [검증 실행] → 25건 문제 발견
|
|
"FIX 모드로 진입하여 25건을 수정하겠습니다."
|
|
|
|
사용자: "아니 2권 먼저 해"
|
|
Claude: "❌ 불가합니다.
|
|
|
|
1권 검증 결과: 25건 미수정
|
|
- 타임라인 역행: 2건
|
|
- 형식 오류: 23건
|
|
|
|
다른 작업 전에 반드시 수정이 필요합니다.
|
|
1권 FIX를 진행할까요?"
|
|
```
|
|
|
|
**시나리오 2: FIX 중단 시도**
|
|
```
|
|
Claude: [FIX 진행 중... 10/25 완료]
|
|
|
|
사용자: "그만하고 2권 해"
|
|
Claude: "⚠️ FIX 진행 중입니다.
|
|
|
|
진행 상황: 10/25 완료 (40%)
|
|
남은 작업: 15건
|
|
|
|
중단 시 검증 결과가 무효화됩니다.
|
|
계속 진행할까요? (권장)
|
|
|
|
또는 중단 후 나중에 재개할까요?"
|
|
```
|
|
|
|
**시나리오 3: FIX 완료 후**
|
|
```
|
|
Claude: [FIX 완료 - 25건 수정]
|
|
"재검증을 시작합니다..." (자동)
|
|
|
|
[RE-VERIFICATION 실행]
|
|
→ 결과: 0건
|
|
|
|
"✅ 1권 검증 완료. 다른 작업 가능합니다."
|
|
```
|
|
|
|
### 예외 처리
|
|
|
|
**사용자 명시적 연기:**
|
|
```
|
|
사용자: "1권 FIX 나중에 하고 2권 먼저 검증해"
|
|
Claude: "⚠️ 주의: 1권 미수정 문제 25건이 남아있습니다.
|
|
|
|
나중에 수정하시겠습니까?
|
|
- 예: 2권 검증 진행 (1권 FIX 보류)
|
|
- 아니오: 1권 FIX 먼저 진행"
|
|
|
|
사용자: "예"
|
|
Claude: "알겠습니다. 2권 검증을 시작합니다.
|
|
|
|
📌 알림: 다음 세션 시작 시 1권 미완료 FIX (25건) 경고됩니다."
|
|
```
|
|
|
|
### 상태 추적
|
|
|
|
**검증 후 미수정 문제가 있으면:**
|
|
```
|
|
volumes/vol-01/PENDING-FIX.txt 생성:
|
|
---
|
|
PENDING: yes
|
|
ITEMS: 25
|
|
SOURCE: integration-validation-v4.md
|
|
STATUS: not_started
|
|
CREATED: 2026-01-24 15:30
|
|
---
|
|
```
|
|
|
|
**다음 세션 시작 시:**
|
|
```
|
|
Claude: "⚠️ 미완료 작업 발견
|
|
|
|
1권 FIX 대기 중: 25건
|
|
- 타임라인 역행: 2건
|
|
- 형식 오류: 23건
|
|
|
|
먼저 완료할까요?"
|
|
```
|
|
|
|
### 모드 전환 체크리스트
|
|
|
|
**다른 모드 요청 시 필수 확인:**
|
|
```python
|
|
def before_mode_change(current_mode, new_mode):
|
|
if PENDING_FIX_EXISTS:
|
|
warn_user("미완료 FIX 있음")
|
|
if not user_confirms_skip:
|
|
reject_mode_change()
|
|
enter_fix_mode()
|
|
```
|
|
|
|
### 위반 시 대응
|
|
|
|
**Claude가 해야 할 것:**
|
|
1. ❌ 모드 전환 거부
|
|
2. ⚠️ 미완료 FIX 경고
|
|
3. ✅ FIX 완료 권장
|
|
4. 📋 사용자 선택지 제시
|
|
|
|
**절대 하지 말아야 할 것:**
|
|
1. ❌ 조용히 넘어가기
|
|
2. ❌ "나중에 하겠습니다" 하고 끝내기
|
|
3. ❌ 문제를 보고만 하고 수정 안 하기
|
|
|
|
---
|
|
|
|
## 🔄 컴팩팅 대응 시스템 (v2.1.0 신규)
|
|
|
|
### 배치 작업 시 WORK-MODE.txt 사용
|
|
|
|
**배치 시작 시:**
|
|
```
|
|
1. WORK-MODE.txt 파일 생성
|
|
---
|
|
CURRENT_MODE: VERIFICATION
|
|
READ_FILE: standards/verification-mode.md
|
|
---
|
|
BATCH: 01
|
|
RANGE: ch-001 ~ ch-010
|
|
STATUS: IN_PROGRESS
|
|
LAST_COMPLETED: none
|
|
NEXT: ch-001
|
|
REPORT_FILE: validation-batch-01.md
|
|
STARTED: 2026-01-20 14:20
|
|
---
|
|
|
|
2. validation-batch-01.md 파일 생성 (진행 상황 체크리스트)
|
|
```
|
|
|
|
**각 챕터 완료 후:**
|
|
```
|
|
1. validation-batch-01.md에 [x] 표시
|
|
2. 챕터별 상세 내용 추가
|
|
3. WORK-MODE.txt의 LAST_COMPLETED, NEXT 업데이트
|
|
4. 파일 저장
|
|
5. 다음 챕터
|
|
```
|
|
|
|
**컴팩팅 후 재개 시:**
|
|
```
|
|
1. WORK-MODE.txt 읽기
|
|
2. CURRENT_MODE 확인 → VERIFICATION
|
|
3. READ_FILE 확인 → verification-mode.md (이 파일)
|
|
4. REPORT_FILE 읽기 → validation-batch-01.md
|
|
5. 진행 상황 체크리스트 확인
|
|
6. NEXT 챕터부터 재개
|
|
```
|
|
|
|
**배치 완료 시:**
|
|
```
|
|
1. 전체 [x] 확인
|
|
2. WORK-MODE.txt 삭제
|
|
3. 사용자에게 완료 보고
|
|
```
|
|
|
|
**핵심 원칙:**
|
|
```
|
|
❌ 10개 전부 메모리에 저장 후 한 번에 파일 작성
|
|
✅ 1개 완료 → 즉시 파일 업데이트 → WORK-MODE.txt 업데이트 → 다음
|
|
```
|
|
|
|
---
|
|
|
|
## 📋 리포트 유효성 검증 (v2.9.0 신규)
|
|
|
|
> **참고:** `standards/report-management.md` 참조
|
|
|
|
### 🚨 필수: 리포트 읽기 전 유효성 체크
|
|
|
|
**문제:**
|
|
```
|
|
리포트 작성 후 파일이 수정되면 리포트가 과거 상태를 반영
|
|
→ 잘못된 정보를 사용자에게 전달하는 심각한 오류!
|
|
```
|
|
|
|
**해결:**
|
|
```
|
|
리포트 읽기 전 반드시 유효성 검증!
|
|
```
|
|
|
|
### 검증 절차
|
|
|
|
**1단계: 리포트 날짜 확인**
|
|
```bash
|
|
# validation-batch-05.md에서 날짜 추출
|
|
grep "검증일\|완료" validation-batch-05.md
|
|
# 예: **검증일:** 2026-01-21
|
|
```
|
|
|
|
**2단계: 대상 파일 수정 시간 확인**
|
|
```bash
|
|
# 배치 5 = ch-041~050
|
|
ls -l chapters/ch-04*.md chapters/ch-050.md
|
|
|
|
# Windows
|
|
Get-ChildItem "l:\...\chapters\ch-04*.md" | Select-Object Name,LastWriteTime
|
|
|
|
# 최종 수정 시간 확인
|
|
```
|
|
|
|
**3단계: 비교 및 판정**
|
|
```
|
|
리포트 날짜: 2026-01-21
|
|
파일 수정:
|
|
- ch-041.md: 2026-01-20 ✅ (리포트 이전)
|
|
- ch-046.md: 2026-01-24 ❌ (리포트 이후!)
|
|
|
|
→ 판정: 리포트 무효 → 재검증 필요
|
|
```
|
|
|
|
### 무효화 조건
|
|
|
|
**자동 무효:**
|
|
1. 대상 파일 중 하나라도 리포트 이후 수정됨
|
|
2. FIX 모드에서 챕터 재배치 발생
|
|
3. 리포트 작성일 < 파일 최종 수정일
|
|
|
|
**사용자 보고 형식:**
|
|
|
|
✅ **리포트 유효:**
|
|
```
|
|
validation-batch-05.md 확인:
|
|
- 작성일: 2026-01-21
|
|
- 파일 수정: 2026-01-20 (리포트 이전)
|
|
- 상태: ✅ 유효
|
|
|
|
배치 5 결과 사용 가능
|
|
```
|
|
|
|
❌ **리포트 무효:**
|
|
```
|
|
validation-batch-05.md 확인:
|
|
- 작성일: 2026-01-21
|
|
- 파일 수정: 2026-01-24 (리포트 이후!)
|
|
- 상태: ❌ 무효
|
|
|
|
이유: ch-028~030 재배치로 파일 수정됨
|
|
→ 배치 5 재검증 필요
|
|
```
|
|
|
|
### 체크리스트
|
|
|
|
**모든 리포트 읽기 전:**
|
|
- [ ] 리포트 파일 존재 확인
|
|
- [ ] 리포트 작성 날짜 추출
|
|
- [ ] 대상 파일 목록 확인 (RANGE 기준)
|
|
- [ ] 각 파일 최종 수정 시간 확인
|
|
- [ ] 리포트 날짜 < 파일 수정? → 무효
|
|
- [ ] 무효 시: 사용자에게 명확히 보고 + 재검증
|
|
- [ ] 유효 시: 리포트 내용 사용
|
|
|
|
---
|
|
|
|
## 🔄 통합 검증 (최종 단계, v2.5.0 신규)
|
|
|
|
### 개요
|
|
|
|
**통합 검증이란?**
|
|
- 모든 배치 검증 완료 **후** 실행
|
|
- 권 전체 구조 확인 (배치는 나무, 통합은 숲)
|
|
- 배치 검증에서 놓칠 수 있는 전체 문제 발견
|
|
|
|
**왜 필요한가?**
|
|
```
|
|
문제 사례 (실제 발생):
|
|
- 배치 5 검증 시: ch-050 "회고와 전망" 제목 확인 → 마무리처럼 보임
|
|
- 배치 6 검증 시: ch-051부터 시작 → "이전 배치 있었겠지" 추정
|
|
- ❌ 결과: ch-050이 "2권 마무리"인 줄 잘못 판단
|
|
- ✅ 실제: ch-059-2 "2부를 향하여"가 진짜 마지막
|
|
|
|
→ 배치만 보면 전체 구조를 놓침!
|
|
```
|
|
|
|
### 실행 시점
|
|
|
|
```
|
|
배치 1 검증 → 배치 2 검증 → ... → 배치 N 검증
|
|
↓
|
|
📋 통합 검증 (NEW!)
|
|
↓
|
|
검증 완료
|
|
```
|
|
|
|
**마지막 배치 완료 후 즉시 실행**
|
|
|
|
### 통합 검증 체크 항목
|
|
|
|
#### 1. 전체 챕터 개수 확인
|
|
|
|
```markdown
|
|
✅ 파일 리스트 확인
|
|
- ls volumes/vol-XX/chapters/ch-*.md | wc -l
|
|
- 예상 개수와 비교
|
|
|
|
예시:
|
|
- 예상: 50화 (설계 문서 기준)
|
|
- 실제: 59화 (ch-001.md ~ ch-059-2.md)
|
|
- 판정: ❌ 9개 차이! 확인 필요
|
|
|
|
✅ 분할 파일 확인
|
|
- ch-XXX-1.md, ch-XXX-2.md 존재 여부
|
|
- 각 분할 파일 용도 확인
|
|
- 원본 ch-XXX.md 삭제 여부 확인
|
|
```
|
|
|
|
#### 2. 첫 화 / 마지막 화 확인
|
|
|
|
```markdown
|
|
✅ 첫 화 확인
|
|
- 파일명: ch-001.md
|
|
- 제목: "X권 1화: ..."
|
|
- 타임라인: 시작 날짜
|
|
- 판정: ✅ / ❌
|
|
|
|
✅ 마지막 화 확인
|
|
- 파일 목록 정렬 후 마지막 파일 확인
|
|
- ls volumes/vol-XX/chapters/ch-*.md | sort | tail -1
|
|
- 예: ch-059-2.md
|
|
- 제목 확인: "2부를 향하여" 등
|
|
- 마무리 키워드: "끝", "마무리", "다음 권" 등
|
|
- 판정: ✅ / ❌
|
|
```
|
|
|
|
#### 3. "마무리" 키워드 검증
|
|
|
|
```markdown
|
|
⚠️ 중요: "마무리" 키워드가 실제 마지막인가?
|
|
|
|
✅ 검색 실행
|
|
- grep -n "회고\|마무리\|결산\|끝" volumes/vol-XX/chapters/ch-*.md
|
|
|
|
✅ 발견 시 확인
|
|
- 위치: ch-050 "회고와 전망"
|
|
- 실제 마지막: ch-059-2 "2부를 향하여"
|
|
- 판정: ❌ ch-050은 중간 회고, 마지막 아님!
|
|
|
|
기록:
|
|
- "마무리" 키워드 위치: ch-050
|
|
- 실제 마지막: ch-059-2
|
|
- ⚠️ 혼동 가능성: 높음
|
|
```
|
|
|
|
#### 4. 권 구조 검증
|
|
|
|
```markdown
|
|
✅ 기-승-전-결 구조
|
|
|
|
- 시작 (1/4 지점): ch-001 ~ ch-015
|
|
- 전개 (2/4 지점): ch-016 ~ ch-030
|
|
- 위기 (3/4 지점): ch-031 ~ ch-045
|
|
- 결말 (4/4 지점): ch-046 ~ 마지막
|
|
|
|
확인:
|
|
- 각 구간이 자연스러운가?
|
|
- 갑자기 끝나는 느낌 없는가?
|
|
- 마지막 챕터가 정말 끝인가?
|
|
|
|
예시:
|
|
- 2권 총 59화
|
|
- 1/4: ch-001~015 (15화)
|
|
- 2/4: ch-016~030 (15화)
|
|
- 3/4: ch-031~045 (15화)
|
|
- 4/4: ch-046~059 (14화)
|
|
→ ✅ 균형적
|
|
```
|
|
|
|
#### 5. 배치 경계 재검증
|
|
|
|
```markdown
|
|
✅ 배치 간 연결 확인
|
|
|
|
- 배치 1 → 배치 2: ch-010 → ch-011
|
|
- 배치 2 → 배치 3: ch-020 → ch-021
|
|
- ...
|
|
- 배치 5 → 배치 6: ch-050 → ch-051
|
|
|
|
각 경계에서:
|
|
- 타임라인 연속성
|
|
- 내용 연결성
|
|
- 갑작스러운 변화 없음
|
|
```
|
|
|
|
#### 6. 전체 타임라인 검증
|
|
|
|
```markdown
|
|
✅ 시작 → 끝 흐름
|
|
|
|
- 시작: ch-001 타임라인
|
|
- 끝: ch-059 타임라인
|
|
- 총 기간 계산
|
|
- 역행 없음 재확인
|
|
|
|
예시:
|
|
- 시작: 1947.1.1 (ch-001)
|
|
- 끝: 1955.1.1 (ch-059-2)
|
|
- 총 기간: 8년
|
|
→ ✅ 자연스러움
|
|
```
|
|
|
|
### 통합 검증 보고서 형식
|
|
|
|
```markdown
|
|
# X권 통합 검증 보고서
|
|
|
|
> **검증일:** YYYY-MM-DD
|
|
> **전체 범위:** ch-001 ~ ch-XXX
|
|
> **모드:** 통합 검증 (Final Integration Check)
|
|
|
|
---
|
|
|
|
## 📊 전체 구조 요약
|
|
|
|
### 챕터 개수
|
|
- **예상:** 50화
|
|
- **실제:** 59화
|
|
- **판정:** ⚠️ 9개 차이 (확인 필요)
|
|
|
|
### 첫 화 / 마지막 화
|
|
- **첫 화:** ch-001.md "X권 1화: ..." ✅
|
|
- **마지막 화:** ch-059-2.md "2부를 향하여" ✅
|
|
|
|
### "마무리" 키워드 검증
|
|
- **발견 위치:** ch-050 "회고와 전망"
|
|
- **실제 마지막:** ch-059-2
|
|
- **판정:** ⚠️ ch-050은 중간 회고, 혼동 주의!
|
|
|
|
### 권 구조
|
|
- 시작 (1/4): ch-001~015 ✅
|
|
- 전개 (2/4): ch-016~030 ✅
|
|
- 위기 (3/4): ch-031~045 ✅
|
|
- 결말 (4/4): ch-046~059 ✅
|
|
|
|
### 전체 타임라인
|
|
- **시작:** 1947.1.1
|
|
- **끝:** 1955.1.1
|
|
- **총 기간:** 8년 ✅
|
|
|
|
---
|
|
|
|
## 🔴 발견된 문제
|
|
|
|
### 1. 챕터 개수 불일치
|
|
- 예상 50화 vs 실제 59화
|
|
- 원인: [확인 필요]
|
|
|
|
### 2. "마무리" 키워드 혼동 가능성
|
|
- ch-050 "회고와 전망"이 마지막처럼 보임
|
|
- 실제 마지막: ch-059-2
|
|
|
|
---
|
|
|
|
## ✅ 최종 판정
|
|
|
|
- 전체 구조: ✅ / ⚠️ / ❌
|
|
- 챕터 개수: ✅ / ⚠️ / ❌
|
|
- 타임라인: ✅ / ⚠️ / ❌
|
|
|
|
---
|
|
|
|
**통합 검증 완료**
|
|
```
|
|
|
|
### 통합 검증 체크리스트
|
|
|
|
```markdown
|
|
- [ ] 1. 전체 챕터 개수 확인
|
|
- [ ] 2. 첫 화 확인 (ch-001)
|
|
- [ ] 3. 마지막 화 확인 (ls | sort | tail -1)
|
|
- [ ] 4. "마무리" 키워드 검색 및 검증
|
|
- [ ] 5. 권 구조 균형 확인 (기승전결)
|
|
- [ ] 6. 배치 경계 재검증
|
|
- [ ] 7. 전체 타임라인 흐름 확인
|
|
- [ ] 8. 통합 검증 보고서 생성
|
|
```
|
|
|
|
### 통합 검증 실행 명령
|
|
|
|
```
|
|
"통합 검증해"
|
|
"권 전체 검증"
|
|
"전체 구조 확인해"
|
|
```
|
|
|
|
---
|
|
|
|
## 📋 검증 모드 개요
|
|
|
|
**검증 모드는:**
|
|
- 6단계 통합 검증
|
|
- 문제 발견 및 **기록만** (수정하지 않음!)
|
|
- 검증 보고서 생성 → FIX 모드로 전달
|
|
|
|
**핵심 원칙:**
|
|
```
|
|
VERIFICATION = 발견 + 기록
|
|
FIX = 수정
|
|
(분리!)
|
|
```
|
|
|
|
**진입 명령:**
|
|
- "검증해"
|
|
- "점검 모드"
|
|
- "X권 검증해"
|
|
- "전체 검증"
|
|
|
|
**부분 검증:**
|
|
- "타임라인만 검증해"
|
|
- "호칭 검증해"
|
|
- "바텀 검증해"
|
|
|
|
---
|
|
|
|
## 📖 소설 검증 특성 (v2.7.0 신규)
|
|
|
|
### 소설 ≠ 기술 문서
|
|
|
|
**핵심 원칙:**
|
|
```
|
|
소설은 창작물이다.
|
|
병렬 서사, 옴니버스, 다중 시점 = 정상적인 소설 기법
|
|
타임라인 겹침 ≠ 무조건 오류
|
|
```
|
|
|
|
### ✅ 정상적인 소설 기법
|
|
|
|
**1. 병렬 서사 (Parallel Narrative)**
|
|
```
|
|
같은 시기, 다른 장소/인물 이야기를 동시 진행
|
|
|
|
예시:
|
|
- ch-010: 강민준(서울), 김구 만남, 11월 말
|
|
- ch-011: 박현우(서울 빈민가), 페니실린 배포, 11월 1일~
|
|
- ch-011: 최태준(만주), 출발 준비, 11월~
|
|
|
|
판정: ✅ 정상 (서로 다른 장소/인물)
|
|
```
|
|
|
|
**2. 옴니버스 (Omnibus)**
|
|
```
|
|
여러 시점을 교차하며 전체 그림 완성
|
|
|
|
예시:
|
|
- 같은 날, 서울 5곳 동시 장면
|
|
- 각 장소마다 다른 인물 시점
|
|
- 전체가 모여 하나의 사건 구성
|
|
|
|
판정: ✅ 정상 (다중 시점 교차)
|
|
```
|
|
|
|
**3. 다중 시점 (Multiple POV)**
|
|
```
|
|
같은 사건을 여러 각도에서 묘사
|
|
|
|
예시:
|
|
- ch-020: 3.1절 시위 (강민준 시점)
|
|
- ch-021: 3.1절 당일 (이승만 시점)
|
|
|
|
판정: ✅ 정상 (같은 사건, 다른 각도)
|
|
```
|
|
|
|
### ❌ 실제 오류
|
|
|
|
**1. 물리적 모순 (Physical Contradiction)**
|
|
```
|
|
같은 인물이 두 곳에 동시 존재
|
|
|
|
예시:
|
|
- ch-010: 강민준이 서울 경교장에서 김구와 대화 (11.23 오후 2시)
|
|
- ch-011: 강민준이 만주 연길에서 회의 (11.23 오후 2시)
|
|
|
|
판정: 🔴 긴급 오류 (물리적 불가능)
|
|
```
|
|
|
|
**2. 인과관계 모순 (Causality Error)**
|
|
```
|
|
결과가 원인보다 먼저 발생
|
|
|
|
예시:
|
|
- ch-005: 페니실린 배포 시작 (10.1)
|
|
- ch-010: 페니실린 첫 생산 (10.25)
|
|
|
|
판정: 🔴 긴급 오류 (인과 역전)
|
|
```
|
|
|
|
**3. 사건 중복 (Event Duplication)**
|
|
```
|
|
같은 대화/장면이 여러 챕터에서 반복
|
|
|
|
예시:
|
|
- ch-003: 여운형과 첫 만남 대화 전체
|
|
- ch-005: 똑같은 대화 장면 재등장
|
|
|
|
판정: 🔴 긴급 오류 (중복)
|
|
```
|
|
|
|
### 🔍 검증 절차 (v2.7.0)
|
|
|
|
**타임라인 겹침 발견 시:**
|
|
```
|
|
1단계: 양쪽 파일 읽기 (필수)
|
|
- 이전 챕터 내용 확인
|
|
- 다음 챕터 내용 확인
|
|
|
|
2단계: 물리적 모순 체크
|
|
✅ 같은 인물? → 어디에 있나?
|
|
✅ 같은 사건? → 중복인가, 다른 각도인가?
|
|
✅ 인과관계? → 순서가 맞나?
|
|
|
|
3단계: 판정
|
|
- 모순 있음 → 🔴 긴급 오류
|
|
- 모순 없음 → ✅ 병렬 서사 (정상)
|
|
|
|
4단계: 기록
|
|
- 모순: 상세 설명 + 🔴
|
|
- 정상: "병렬 서사, 문제 없음" + ✅
|
|
```
|
|
|
|
### 📝 보고서 작성 예시
|
|
|
|
**❌ 잘못된 보고:**
|
|
```markdown
|
|
타임라인 겹침 발견:
|
|
- ch-010: 11.1~11.24
|
|
- ch-011: 11.1~11.25
|
|
판정: 🔴 긴급 오류
|
|
```
|
|
|
|
**✅ 올바른 보고:**
|
|
```markdown
|
|
타임라인 겹침 발견:
|
|
- ch-010: 11.1~11.24 (강민준 서울, 김구 만남)
|
|
- ch-011: 11.1~11.25 (박현우 서울 빈민가, 최태준 만주)
|
|
|
|
물리적 모순 확인:
|
|
- 같은 인물 두 곳? → ❌ (서로 다른 인물)
|
|
- 같은 사건 중복? → ❌ (서로 다른 장면)
|
|
- 인과관계 오류? → ❌ (자연스러운 연결)
|
|
|
|
판정: ✅ 병렬 서사 (정상)
|
|
```
|
|
|
|
### ⚠️ 주의사항
|
|
|
|
**과도한 검증 방지:**
|
|
- 소설 특성을 무시한 기계적 검증 금지
|
|
- "겹침 = 오류" 공식화 금지
|
|
- 반드시 내용 확인 후 판정
|
|
|
|
**교훈 (실제 사례):**
|
|
```
|
|
v2.6.0 검증에서 ch-010↔ch-011 타임라인 겹침을 🔴 긁급으로 판정
|
|
→ 실제: 병렬 서사 (정상)
|
|
→ 문제: 소설 특성 미반영
|
|
→ 개선: v2.7.0에서 물리적 모순 확인 절차 추가
|
|
```
|
|
|
|
---
|
|
|
|
## 📚 모드 진입 시 읽을 파일
|
|
|
|
### 필수
|
|
1. `volumes/vol-XX/plot-master.md` - 플롯 (일치도 검증용)
|
|
2. `settings/characters-master.md` - 캐릭터 + 호칭 규칙
|
|
3. `volumes/vol-XX/timeline.md` - 타임라인
|
|
|
|
### 검증 대상
|
|
4. `volumes/vol-XX/chapters/ch-*.md` - 전체 챕터
|
|
|
|
---
|
|
|
|
## 🎯 검증 워크플로우
|
|
|
|
### 배치 검증 (6단계)
|
|
|
|
```
|
|
사용자: "검증해"
|
|
↓
|
|
[1/6] 구조 검증 중...
|
|
[2/6] 형식 검증 중...
|
|
[3/6] 타임라인 검증 중...
|
|
[4/6] 내용 검증 중...
|
|
[5/6] 일관성 검증 중...
|
|
[6/6] 보고서 생성 중...
|
|
↓
|
|
배치 검증 보고서 출력
|
|
```
|
|
|
|
### 전체 워크플로우 (v2.5.0)
|
|
|
|
```
|
|
배치 1 검증 (6단계)
|
|
↓
|
|
배치 2 검증 (6단계)
|
|
↓
|
|
...
|
|
↓
|
|
배치 N 검증 (6단계)
|
|
↓
|
|
📋 통합 검증 (최종 단계) ← NEW!
|
|
- 전체 챕터 개수 확인
|
|
- 첫/마지막 화 확인
|
|
- "마무리" 키워드 검증
|
|
- 권 구조 확인
|
|
↓
|
|
통합 검증 보고서
|
|
↓
|
|
"FIX 모드로 수정하시겠습니까?"
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 단계별 상세
|
|
|
|
### 1단계: 구조 검증
|
|
|
|
```
|
|
✅ 파일 존재/연속성
|
|
- ch-001 ~ ch-XXX 모두 있나?
|
|
- 빠진 번호 없나?
|
|
- 중복 번호 없나?
|
|
|
|
✅ 파일명 규칙
|
|
- ch-XXX.md 형식
|
|
- 3자리 숫자 패딩
|
|
|
|
기록:
|
|
- 총 챕터 수
|
|
- 빠진 번호 목록
|
|
- 중복 번호 목록
|
|
```
|
|
|
|
### 2단계: 형식 검증
|
|
|
|
```
|
|
✅ 헤더 형식
|
|
- "# X권 Y화: 제목" 형식
|
|
- 파일명 번호 = 헤더 화수 일치
|
|
|
|
✅ 타임라인 형식
|
|
- "> **타임라인:** YYYY.M.D-M.D" 형식
|
|
|
|
⭐ 바텀 검증
|
|
- "[X화 끝]" 있으면 → 🔴 기록
|
|
- "다음 X화:" 있으면 → 🔴 기록
|
|
|
|
기록:
|
|
- 헤더 오류 목록
|
|
- 화수 불일치 목록
|
|
- 바텀 있는 챕터 목록
|
|
```
|
|
|
|
### 3단계: 타임라인 검증
|
|
|
|
```
|
|
✅ 시간 순서
|
|
- ch-001 → ch-002 → ... 시간 순서
|
|
|
|
✅ 역행 체크 ⭐ 추측 금지!
|
|
- 이전 화보다 과거로 가는 경우
|
|
- 🚨 역행 발견 시:
|
|
1. 해당 챕터 전체 읽기 (필수!)
|
|
2. 제목에 "회상" 표시 확인
|
|
3. 본문 시제 확인 ("~했었다" 등)
|
|
4. Part 헤더에 회상 표시 확인
|
|
5. 명확한 회상 표시 없으면 → 🔴 긴급 오류
|
|
- ❌ "회상으로 보임" 추측 금지
|
|
- ❌ "병렬 진행일 수도" 추측 금지
|
|
- ✅ 파일 읽고 명확히 판정
|
|
|
|
✅ 타임라인 겹침 (v2.7.0 소설 특성 반영)
|
|
- 같은 날짜 과도한 반복
|
|
- 🚨 겹침 발견 시 물리적 모순 확인 (필수!):
|
|
1. 같은 인물이 두 곳에 동시 존재? → 🔴 긴급
|
|
2. 같은 사건이 중복? → 🔴 긴급
|
|
3. 인과관계 모순? → 🔴 긴급
|
|
4. 다른 장소/인물 병렬? → ✅ 정상 (병렬 서사)
|
|
- ✅ 정상 사례:
|
|
- ch-010(강민준 서울) + ch-011(박현우 서울, 최태준 만주) 같은 시기
|
|
- 옴니버스: 여러 시점 교차
|
|
- 다중 시점: 같은 사건 다른 각도
|
|
- ❌ 오류 사례:
|
|
- 강민준이 같은 날 서울과 만주에 동시 존재
|
|
- 같은 대화 장면이 두 챕터에서 반복
|
|
- 🔑 핵심: 소설 ≠ 기술 문서, 병렬 서사는 정상 기법
|
|
|
|
⭐ 배치 경계 체크 (v2.2.0 신규, v2.6.0 강제화, v2.7.0 소설 특성 반영)
|
|
- 🚨 배치 시작 시 필수 확인:
|
|
1. 이전 배치 마지막 챕터 타임라인 읽기
|
|
2. 현재 배치 첫 챕터 타임라인 읽기
|
|
3. 시간 흐름 연속성 검증
|
|
4. 역행 발견 시 → 회상 확인 → 없으면 🔴 긴급
|
|
5. 겹침 발견 시 → 물리적 모순 확인 (위 절차)
|
|
- ch-010 → ch-011 연결 확인
|
|
- ch-020 → ch-021 연결 확인
|
|
- ch-030 → ch-031 연결 확인
|
|
- ch-040 → ch-041 연결 확인
|
|
- ch-050 → ch-051 연결 확인
|
|
- ❌ "이전 배치 있었겠지" 추측 금지
|
|
- ✅ 실제로 이전 챕터 확인
|
|
- ✅ 타임라인 겹침 = 물리적 모순 먼저 확인
|
|
|
|
기록:
|
|
- 타임라인 순서 테이블
|
|
- 역행 발견 목록 (🔴 긴급)
|
|
- 날짜 겹침 경고
|
|
- 배치 경계 문제 목록 (🔴 긴급)
|
|
```
|
|
|
|
### 4단계: 내용 검증
|
|
|
|
```
|
|
✅ 플롯 일치도
|
|
- plot-master.md와 실제 내용 비교
|
|
- 제목, 타임라인, 핵심 내용
|
|
|
|
✅ 캐릭터 등장
|
|
- 소개 없이 갑자기 등장?
|
|
- 죽은/퇴장 캐릭터 재등장?
|
|
|
|
⭐ 호칭 일관성
|
|
- characters-master.md의 호칭 규칙 기준
|
|
- 결혼 전/후 호칭 구분
|
|
- 갑자기 호칭 바뀌는 경우
|
|
|
|
⭐ 호칭 복수/단수 정확성 (v2.3.0)
|
|
- characters-master.md 나이 관계 테이블 기준
|
|
- 화자가 대상 몇 명에게 말하는지 검증
|
|
- 검증 방법:
|
|
1. "형님들", "형들", "선배님들" 등 복수 호칭 검색
|
|
2. 화자 확인 (대화 직전 지문에서 파악)
|
|
3. 나이 관계 테이블에서 화자보다 나이/지위 높은 사람 수 확인
|
|
4. 대상 1명 → 단수 / 대상 2명 이상 → 복수
|
|
- 실제 오류 예시:
|
|
❌ 박현우(37세, 2위): "형님들" → 윗사람 1명(강민준 41세)만 있음 → "형님" 사용해야
|
|
✅ 최태준(35세, 3위): "형님들" → 윗사람 2명(강민준+박현우) 있음 → 올바름
|
|
- 발견 시 기록: 화자, 대화 내용, 실제 윗사람 수, 올바른 호칭
|
|
|
|
✅ 말투 일관성
|
|
- 존댓말/반말 패턴 유지
|
|
|
|
⭐ 캐릭터 성격 일관성 (v2.4.0 신규!)
|
|
- characters-master.md의 성격 설정 기준
|
|
- 검증 방법:
|
|
1. 각 캐릭터의 핵심 성격 확인 (냉철/감정적/과묵/수다 등)
|
|
2. 본문에서 성격과 다른 행동/반응 검색
|
|
- 오류 예시:
|
|
❌ 민준(냉철한 전략가): "아악! 무서워!" 비명
|
|
❌ 태준(과묵함): 갑자기 장황한 설명 10줄
|
|
✅ 민준(냉철): 손이 떨렸다. 하지만 표정은 변하지 않았다.
|
|
- 발견 시 기록: 캐릭터, 설정된 성격, 모순되는 행동, 위치
|
|
|
|
⭐ 캐릭터 능력 일관성 (v2.4.0 신규!)
|
|
- 이전 챕터에서 못했던 것을 갑자기 함 (학습 과정 없이)
|
|
- 검증 방법:
|
|
1. 중요 능력 등장 시 이전 챕터 확인
|
|
2. 학습/훈련 과정 있었는지 체크
|
|
- 오류 예시:
|
|
❌ ch-003: "난 총을 한 번도 쏴본 적 없어."
|
|
ch-010: 민준이 저격총으로 완벽한 저격 성공
|
|
→ 학습 과정 누락!
|
|
✅ ch-003: "난 총을 한 번도..."
|
|
ch-005: 몰래 사격 연습 시작
|
|
ch-010: 일주일간 연습 끝에 사격 성공
|
|
- 발견 시 기록: 캐릭터, 능력, 이전 언급, 학습 과정 유무
|
|
|
|
⭐ 캐릭터 지식 일관성 (v2.4.0 신규!)
|
|
- 몰랐던 정보를 갑자기 앎 (정보 획득 과정 없이)
|
|
- 검증 방법:
|
|
1. 중요 정보 언급 시 이전 챕터 확인
|
|
2. 정보 획득 장면 있었는지 체크
|
|
- 오류 예시:
|
|
❌ ch-004: "강세우? 누구야 그 사람?"
|
|
ch-005: "강세우가 형님이라고 부른 이유는..."
|
|
→ 소개받은 장면 누락!
|
|
✅ ch-004: "강세우? 누구야?"
|
|
ch-004 끝: 여운형이 설명함
|
|
ch-005: "강세우가 형님이라고..."
|
|
- 발견 시 기록: 캐릭터, 정보, 이전 상태, 획득 과정 유무
|
|
|
|
⭐ 장면 중복 (v2.1.0 신규)
|
|
- 같은 대화/장면이 챕터 내에서 반복되는지
|
|
- 같은 정보를 여러 번 전달하는지
|
|
- 예: "예언 내용"을 Part 2, Part 3에서 중복
|
|
|
|
⭐ 인과관계 논리 (v2.1.0 신규)
|
|
- 이전 챕터에서 받은 물건/정보가 다음 챕터에 반영되는지
|
|
- 예: ch-004에서 명단 받았는데 ch-005에서 또 작성 ❌
|
|
- 시간 흐름에 따른 상태 변화 논리
|
|
|
|
⭐ 정보 흐름 (v2.1.0 신규)
|
|
- 캐릭터 첫 등장 시 소개 있는지
|
|
- 관계 형성이 점진적인지 (갑자기 친밀한 호칭 ❌)
|
|
- 예: 강세우가 소개 없이 갑자기 "형님" ❌
|
|
|
|
⭐ 설정 일관성 (v2.2.0)
|
|
- 숫자/데이터 일관성: 인원수, 금액, 날짜 일치
|
|
- 예: 3화에서 "20명" → 5화에서 "50명" (설명 없음) ❌
|
|
- 물리적 설정: 거리, 시간, 위치 논리
|
|
- 예: 서울→부산 1시간 (불가능) ❌
|
|
- 호칭 변화 추적: 호칭 변화에 계기 있는지
|
|
- 예: "서 선생님" → "윤희" (계기 누락) ❌
|
|
|
|
⭐ 날씨/계절 일관성 (v2.4.1 신규!)
|
|
- 타임라인 날짜와 날씨/계절 매칭
|
|
- 검증 방법:
|
|
1. 타임라인에서 날짜 확인 (YYYY.M.D)
|
|
2. 본문에서 날씨/계절 묘사 확인
|
|
3. 날짜와 날씨가 맞는지 검증
|
|
- 오류 예시:
|
|
❌ 타임라인: 1945.5.15 (5월)
|
|
본문: "눈이 펑펑 내렸다."
|
|
→ 5월에 눈? 계절 불일치!
|
|
❌ 타임라인: 1945.12.20 (12월)
|
|
본문: "벚꽃이 만개했다."
|
|
→ 12월에 벚꽃? 계절 불일치!
|
|
✅ 타임라인: 1945.5.15
|
|
본문: "봄비가 내렸다."
|
|
→ 5월에 맞는 날씨!
|
|
- 계절별 기준:
|
|
- 봄 (3~5월): 봄비, 따뜻함, 벚꽃
|
|
- 여름 (6~8월): 더위, 장마, 폭염
|
|
- 가을 (9~11월): 선선함, 낙엽, 단풍
|
|
- 겨울 (12~2월): 추위, 눈, 얼음
|
|
- 발견 시 기록: 위치, 타임라인 날짜, 본문 날씨 묘사, 모순 이유
|
|
|
|
기록:
|
|
- 플롯 불일치 목록
|
|
- 호칭 오류 목록
|
|
- 호칭 복수/단수 오류 목록 (v2.3.0)
|
|
- 캐릭터 성격 일관성 오류 목록 (v2.4.0)
|
|
- 캐릭터 능력 일관성 오류 목록 (v2.4.0)
|
|
- 캐릭터 지식 일관성 오류 목록 (v2.4.0)
|
|
- 캐릭터 오류 목록
|
|
- 장면 중복 목록 (v2.1.0)
|
|
- 인과관계 오류 목록 (v2.1.0)
|
|
- 정보 흐름 오류 목록 (v2.1.0)
|
|
- 설정 일관성 오류 목록 (v2.2.0)
|
|
- 날씨/계절 일관성 오류 목록 (v2.4.1 신규!)
|
|
```
|
|
|
|
### 5단계: 일관성 검증
|
|
|
|
```
|
|
✅ 앞뒤 연결
|
|
- 이전 화 끝 ↔ 다음 화 시작
|
|
- 갑작스러운 상황 변화
|
|
|
|
✅ 복선 추적
|
|
- 설치된 복선 목록
|
|
- 회수된 복선 목록
|
|
- 미회수 복선 (회수 예정)
|
|
|
|
✅ 설정 충돌
|
|
- 같은 사건 다른 날짜
|
|
- 같은 캐릭터 다른 나이
|
|
|
|
기록:
|
|
- 연결 오류 목록
|
|
- 복선 현황 테이블
|
|
- 설정 충돌 목록
|
|
```
|
|
|
|
### 6단계: 보고서 생성
|
|
|
|
```
|
|
리포트 작성:
|
|
- validation-batch-XX.md 생성
|
|
- 심각도별 분류 (🔴/🟡/🟢)
|
|
- 챕터별 오류 목록
|
|
- 총 오류 개수 산출
|
|
```
|
|
|
|
### 7단계: 판단 회피 자가 검증 ⭐ 신규! (v3.0.0)
|
|
|
|
```
|
|
🚨 리포트 작성 완료 후 필수 실행!
|
|
🚨 이 검증을 통과하지 못하면 리포트 무효!
|
|
```
|
|
|
|
**7-1. 판단 회피 자동 감지**
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# 판단 회피 자동 감지 스크립트
|
|
|
|
REPORT="validation-batch-05.md"
|
|
|
|
echo "🔍 판단 회피 표현 검색 중..."
|
|
|
|
# 추측 표현 패턴 검색
|
|
SPECULATION=$(grep -n "로 보임\|일 수도\|인 것 같\|으로 추정\|확인 필요\|것으로 예상\|추측\|아마도" "$REPORT")
|
|
|
|
if [ -n "$SPECULATION" ]; then
|
|
echo ""
|
|
echo "❌ 판단 회피 표현 발견!"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "$SPECULATION"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo ""
|
|
echo "🚨 VERIFICATION 원칙 위반!"
|
|
echo ""
|
|
echo "위반 내용:"
|
|
echo "- 추측 표현 사용 (명확한 판정 필요)"
|
|
echo "- 판단 회피 (책임 전가)"
|
|
echo ""
|
|
echo "⚠️ 다음 중 하나를 선택하세요:"
|
|
echo ""
|
|
echo "Option 1: 직접 판정"
|
|
echo " → 해당 챕터 파일 읽기"
|
|
echo " → 명확히 판정 (🔴 긴급 / ✅ 정상)"
|
|
echo " → 근거 명시"
|
|
echo ""
|
|
echo "Option 2: 사용자 질문"
|
|
echo " → 불확실한 이유 명시"
|
|
echo " → 구체적 질문 작성"
|
|
echo " → 사용자 답변 대기"
|
|
echo ""
|
|
echo "❌ 추측으로 넘어가는 것은 금지!"
|
|
echo ""
|
|
exit 1
|
|
else
|
|
echo "✅ 판단 회피 없음 - 검증 통과"
|
|
fi
|
|
```
|
|
|
|
**Windows PowerShell 버전:**
|
|
|
|
```powershell
|
|
# 판단 회피 자동 감지 스크립트
|
|
|
|
$REPORT = "validation-batch-05.md"
|
|
|
|
Write-Host "🔍 판단 회피 표현 검색 중..." -ForegroundColor Cyan
|
|
|
|
$SPECULATION = Select-String -Path $REPORT -Pattern "로 보임|일 수도|인 것 같|으로 추정|확인 필요|것으로 예상|추측|아마도"
|
|
|
|
if ($SPECULATION) {
|
|
Write-Host ""
|
|
Write-Host "❌ 판단 회피 표현 발견!" -ForegroundColor Red
|
|
Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
$SPECULATION | ForEach-Object { Write-Host $_.Line -ForegroundColor Yellow }
|
|
Write-Host "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
Write-Host ""
|
|
Write-Host "🚨 VERIFICATION 원칙 위반!" -ForegroundColor Red
|
|
Write-Host ""
|
|
Write-Host "⚠️ 다음 중 하나를 선택하세요:"
|
|
Write-Host ""
|
|
Write-Host "Option 1: 직접 판정" -ForegroundColor Green
|
|
Write-Host " → 해당 챕터 파일 읽기"
|
|
Write-Host " → 명확히 판정 (🔴 긴급 / ✅ 정상)"
|
|
Write-Host ""
|
|
Write-Host "Option 2: 사용자 질문" -ForegroundColor Green
|
|
Write-Host " → 불확실한 이유 명시"
|
|
Write-Host " → 구체적 질문 작성"
|
|
Write-Host ""
|
|
exit 1
|
|
} else {
|
|
Write-Host "✅ 판단 회피 없음 - 검증 통과" -ForegroundColor Green
|
|
}
|
|
```
|
|
|
|
**7-2. 올바른 리포트 형식**
|
|
|
|
**❌ 잘못된 예시 (판단 회피):**
|
|
|
|
```markdown
|
|
### ch-028: 타임라인 관련
|
|
|
|
- 타임라인 역행으로 보임 ⚠️
|
|
- ch-027 (4월) → ch-028 (3월)
|
|
- 회상/병렬 진행일 수도 있음
|
|
- 확인 필요
|
|
```
|
|
|
|
**문제점:**
|
|
- "로 보임" → 추측!
|
|
- "일 수도" → 판단 회피!
|
|
- "확인 필요" → 책임 전가!
|
|
|
|
**✅ 올바른 예시 (Option 1: 직접 판정):**
|
|
|
|
```markdown
|
|
### ch-028: 타임라인 역행 🔴 긴급
|
|
|
|
- ch-027 종료: 1946.04.23
|
|
- ch-028 시작: 1946.03.05
|
|
- 역행: 4월 → 3월
|
|
|
|
**파일 확인 결과:**
|
|
- ch-028.md 전체 읽음
|
|
- 제목: "[회상]" 표시 없음
|
|
- Part 헤더: 회상 표시 없음
|
|
- 본문 시제: 일반 과거형 (회상 아님)
|
|
|
|
**판정:** 명백한 타임라인 역행 오류 🔴
|
|
**조치:** FIX 모드에서 즉시 수정 필요
|
|
```
|
|
|
|
**✅ 올바른 예시 (Option 2: 사용자 질문):**
|
|
|
|
```markdown
|
|
### ch-028: 타임라인 의도 확인 필요 🟡
|
|
|
|
- ch-027 종료: 1946.04.23
|
|
- ch-028 시작: 1946.03.05
|
|
- 역행: 4월 → 3월
|
|
|
|
**파일 확인 결과:**
|
|
- ch-028.md 전체 읽음
|
|
- 제목: "[회상]" 표시 없음
|
|
- 본문 시제: 일반 과거형
|
|
- 하지만 내용이 과거 회상처럼 느껴짐
|
|
|
|
**불확실한 이유:**
|
|
- 명시적 회상 표시는 없음
|
|
- 하지만 서사 흐름상 회상일 가능성
|
|
|
|
**사용자 질문:**
|
|
- Q1: ch-028이 회상 장면이 맞나요?
|
|
- Q2: 맞다면 제목에 "[회상]" 추가할까요?
|
|
- Q3: 아니라면 타임라인 수정이 필요합니다.
|
|
|
|
**대기:** 사용자 답변 대기 중
|
|
```
|
|
|
|
**7-3. 검증 체크리스트**
|
|
|
|
```markdown
|
|
리포트 작성 후 필수 확인:
|
|
|
|
- [ ] 1. 판단 회피 스크립트 실행
|
|
- [ ] 2. 추측 표현 0건 확인
|
|
- [ ] 3. 모든 오류에 명확한 판정
|
|
- [ ] 4. 불확실 시 사용자 질문 작성
|
|
- [ ] 5. 근거 명시 (파일 읽음 여부)
|
|
|
|
⚠️ 하나라도 실패 시 리포트 재작성!
|
|
```
|
|
|
|
---
|
|
|
|
## 📏 오류 카운트 원칙 (v2.4.2 신규)
|
|
|
|
**목적:** 중복 카운트 방지 및 정확한 오류 개수 산출
|
|
|
|
### ⚠️ 주의: 중복 카운트 금지
|
|
|
|
**문제 상황:**
|
|
```
|
|
타임라인 헤더 오류: 7건
|
|
챕터 간 연결 오류: 3건
|
|
---
|
|
합계: 10건 ❌ 잘못된 카운트!
|
|
```
|
|
|
|
**왜 잘못되었나?**
|
|
- "챕터 간 연결 오류" 3건이 **타임라인 문제에서 발생**
|
|
- 실제로는 **같은 오류**를 두 번 센 것!
|
|
- 정확한 합계: 7건 (타임라인 헤더만)
|
|
|
|
---
|
|
|
|
### ✅ 정확한 카운트 방식
|
|
|
|
#### 1. 유형별 카운트 (Primary)
|
|
|
|
**각 오류를 정확히 하나의 카테고리에만 분류:**
|
|
|
|
```markdown
|
|
1. 타임라인 헤더 오류: 7건
|
|
- ch-002, 003, 004, 005, 006, 007, 008
|
|
- 헤더 날짜 ≠ 본문 날짜
|
|
|
|
2. 챕터 간 연결 오류: 3건
|
|
- ch-002→003, ch-003→004, ch-004→005
|
|
- 날짜 건너뜀, 본문 표현 문제
|
|
- ⚠️ 타임라인 오류와 **별개**
|
|
|
|
3. 호칭 복수/단수 오류: 2건
|
|
- ch-002:139, ch-011:511
|
|
|
|
4. 설정 모순: 2건
|
|
- ch-003:417 (나이), ch-003:427 (신분)
|
|
|
|
---
|
|
총 오류: 7+3+2+2 = 14건 ✅
|
|
```
|
|
|
|
#### 2. 챕터별 카운트 (Verification)
|
|
|
|
**각 챕터에서 발견된 오류를 개별로 세기:**
|
|
|
|
```markdown
|
|
- ch-002: 2건 (타임라인 1 + 호칭 1)
|
|
- ch-003: 2건 (타임라인 1 + 설정 1)
|
|
- ch-004: 3건 (타임라인 1 + 연결 1 + 설정 1)
|
|
- ch-005: 2건 (타임라인 1 + 연결 1)
|
|
- ch-006: 1건 (타임라인 1)
|
|
- ch-007: 1건 (타임라인 1)
|
|
- ch-008: 1건 (타임라인 1)
|
|
- ch-011: 2건 (타임라인 1 + 호칭 1)
|
|
|
|
---
|
|
챕터별 합계: 2+2+3+2+1+1+1+2 = 14건 ✅
|
|
```
|
|
|
|
#### 3. 검증 (Mandatory)
|
|
|
|
**두 방식의 합계가 반드시 일치해야 함:**
|
|
|
|
```
|
|
유형별 합계: 14건
|
|
챕터별 합계: 14건
|
|
---
|
|
✅ 일치! 정확한 카운트
|
|
```
|
|
|
|
**불일치 시:**
|
|
```
|
|
유형별 합계: 17건
|
|
챕터별 합계: 12건
|
|
---
|
|
❌ 불일치! 중복 카운트 발생
|
|
→ 재확인 필수
|
|
```
|
|
|
|
---
|
|
|
|
### 🚨 중복 카운트가 발생하는 패턴
|
|
|
|
#### 패턴 1: 연결 문제를 두 번 세기
|
|
|
|
**잘못된 방식:**
|
|
```markdown
|
|
타임라인 오류 (10건):
|
|
- 헤더 오류: ch-002~008 (7건)
|
|
- 연결 문제: ch-002→003, ch-003→004, ch-004→005 (3건)
|
|
|
|
챕터 간 연결 오류 (3건):
|
|
- ch-002→003, ch-003→004, ch-004→005
|
|
|
|
---
|
|
합계: 10 + 3 = 13건 ❌ (연결 3건 중복!)
|
|
```
|
|
|
|
**올바른 방식:**
|
|
```markdown
|
|
타임라인 헤더 오류 (7건):
|
|
- ch-002~008
|
|
|
|
챕터 간 연결 오류 (3건):
|
|
- ch-002→003, ch-003→004, ch-004→005
|
|
|
|
---
|
|
합계: 7 + 3 = 10건 ✅
|
|
```
|
|
|
|
#### 패턴 2: 하위 카테고리를 상위와 중복
|
|
|
|
**잘못된 방식:**
|
|
```markdown
|
|
설정 오류 (5건):
|
|
- 나이 불일치: 2건
|
|
- 신분 모순: 1건
|
|
- 위치 충돌: 2건
|
|
|
|
나이 불일치 (2건):
|
|
- ch-003, ch-015
|
|
|
|
---
|
|
합계: 5 + 2 = 7건 ❌ (나이 2건 중복!)
|
|
```
|
|
|
|
**올바른 방식:**
|
|
```markdown
|
|
설정 오류 (5건):
|
|
- 나이 불일치: 2건 (ch-003, ch-015)
|
|
- 신분 모순: 1건
|
|
- 위치 충돌: 2건
|
|
|
|
---
|
|
합계: 5건만 ✅
|
|
```
|
|
|
|
---
|
|
|
|
### 📋 보고서 작성 체크리스트
|
|
|
|
**보고서 완성 전 필수 확인:**
|
|
|
|
- [ ] 1. 유형별 오류 합계 계산
|
|
- [ ] 2. 챕터별 오류 합계 계산
|
|
- [ ] 3. 두 합계가 일치하는지 확인
|
|
- [ ] 4. 불일치 시 중복 카운트 찾기
|
|
- [ ] 5. 중복 제거 후 재계산
|
|
- [ ] 6. 최종 합계 확정
|
|
- [ ] 7. "총 X건" 표기
|
|
|
|
**예시:**
|
|
```markdown
|
|
## 검증 요약
|
|
|
|
### 유형별
|
|
- 타임라인: 7건
|
|
- 연결: 3건
|
|
- 호칭: 2건
|
|
- 설정: 2건
|
|
**합계: 14건**
|
|
|
|
### 챕터별
|
|
- ch-002: 2건
|
|
- ch-003: 2건
|
|
- ...
|
|
**합계: 14건**
|
|
|
|
✅ 검증 완료 (일치)
|
|
|
|
**총 발견 오류: 14건**
|
|
```
|
|
|
|
---
|
|
|
|
### 🔧 보완 권장 사항
|
|
|
|
1. **validation 작성 시**
|
|
- 각 오류를 정확히 하나의 카테고리에만 할당
|
|
- 중복 가능성이 있는 항목은 명시적으로 분리
|
|
- 예: "타임라인 헤더" vs "챕터 간 연결"
|
|
|
|
2. **최종 보고 전**
|
|
- 유형별/챕터별 합계 검증 필수
|
|
- 불일치 발생 시 중복 카운트 재확인
|
|
- 정확한 숫자 확정 후 보고
|
|
|
|
3. **카운트 방식 표준화**
|
|
- 명확한 카테고리 정의
|
|
- 중복 방지 원칙 적용
|
|
- 검증 절차 준수
|
|
|
|
---
|
|
|
|
## 📊 검증 보고서 형식
|
|
|
|
```markdown
|
|
# X권 검증 보고서
|
|
|
|
> **검증일:** YYYY-MM-DD
|
|
> **검증 범위:** ch-001 ~ ch-XXX
|
|
> **모드:** VERIFICATION (기록만, 수정 없음)
|
|
|
|
---
|
|
|
|
## 📊 요약
|
|
|
|
| 항목 | 발견 건수 | 심각도 |
|
|
|------|----------|--------|
|
|
| 구조 오류 | X건 | 🔴/🟡/🟢 |
|
|
| 형식 오류 | X건 | 🔴/🟡/🟢 |
|
|
| 타임라인 오류 | X건 | 🔴/🟡/🟢 |
|
|
| 내용 오류 | X건 | 🔴/🟡/🟢 |
|
|
| 일관성 오류 | X건 | 🔴/🟡/🟢 |
|
|
| **총계** | **X건** | |
|
|
|
|
---
|
|
|
|
## 🔴 심각 (즉시 수정 필요)
|
|
|
|
| # | 위치 | 유형 | 내용 |
|
|
|---|------|------|------|
|
|
| 1 | ch-012:34 | 설정 충돌 | 민준 나이 32→34 불일치 |
|
|
| 2 | ch-025:102 | 타임라인 | 5월인데 단풍 묘사 |
|
|
| ... | | | |
|
|
|
|
---
|
|
|
|
## 🟡 중요 (수정 권장)
|
|
|
|
| # | 위치 | 유형 | 내용 |
|
|
|---|------|------|------|
|
|
| 1 | ch-018:45 | 호칭 | "윤희 씨" → "서 선생님" (시점 이전) |
|
|
| 2 | ch-033:78 | 바텀 | "[33화 끝]" 존재 |
|
|
| ... | | | |
|
|
|
|
---
|
|
|
|
## 🟢 경미 (선택적 수정)
|
|
|
|
| # | 위치 | 유형 | 내용 |
|
|
|---|------|------|------|
|
|
| 1 | ch-005:12 | 날짜 겹침 | 3일 연속 같은 날짜 |
|
|
| ... | | | |
|
|
|
|
---
|
|
|
|
## 📋 복선 현황
|
|
|
|
| 복선 | 설치 | 회수 | 상태 |
|
|
|------|------|------|------|
|
|
| 만주 언급 | ch-003 | ch-045 | ✅ 회수됨 |
|
|
| 검은 반지 | ch-015 | - | ⏳ 미회수 |
|
|
| ... | | | |
|
|
|
|
---
|
|
|
|
## ➡️ 다음 단계
|
|
|
|
총 **X건** 발견됨.
|
|
→ `FIX 모드`로 일괄 수정 진행
|
|
|
|
명령: "FIX 모드" 또는 "수정 진행해"
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 부분 검증
|
|
|
|
### 타임라인만
|
|
```
|
|
"타임라인만 검증해" → 3단계만 실행
|
|
```
|
|
|
|
### 호칭만
|
|
```
|
|
"호칭 검증해" → 4단계 호칭 항목만
|
|
```
|
|
|
|
### 바텀만
|
|
```
|
|
"바텀 검증해" → 2단계 바텀 항목만
|
|
→ 바텀 있는 챕터 목록 출력
|
|
```
|
|
|
|
### 형식만
|
|
```
|
|
"형식 검증해" → 2단계만 실행
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ 검증 체크리스트
|
|
|
|
### 1단계: 구조
|
|
- [ ] 파일 존재 확인
|
|
- [ ] 번호 연속성
|
|
- [ ] 중복 없음
|
|
|
|
### 2단계: 형식
|
|
- [ ] 헤더 형식
|
|
- [ ] 헤더 화수 = 파일명
|
|
- [ ] 타임라인 형식
|
|
- [ ] 바텀 없음 ⭐
|
|
|
|
### 3단계: 타임라인
|
|
- [ ] 시간 순서
|
|
- [ ] 역행 없음
|
|
- [ ] 날짜 겹침 최소
|
|
|
|
### 4단계: 내용
|
|
- [ ] 플롯 일치도
|
|
- [ ] 캐릭터 등장/퇴장
|
|
- [ ] 호칭 일관성 ⭐
|
|
- [ ] 말투 일관성
|
|
|
|
### 5단계: 일관성
|
|
- [ ] 앞뒤 연결
|
|
- [ ] 복선 추적
|
|
- [ ] 설정 충돌 없음
|
|
|
|
### 6단계: 보고서
|
|
- [ ] 전체 요약
|
|
- [ ] 심각도별 분류
|
|
- [ ] 다음 단계 안내
|
|
|
|
---
|
|
|
|
## 🚫 검증 모드 금지사항 (v2.6.0 강화)
|
|
|
|
### ❌ 절대 금지 사항
|
|
|
|
**1. 추측 금지 (v2.6.0 강화)**
|
|
```
|
|
❌ "~로 보임", "~일 수도", "~으로 추정", "~인 것 같음"
|
|
❌ "회상/병렬 진행으로 보이나" (실제 파일 읽고 확인!)
|
|
❌ "의도적 오버랩으로 보임" (내용 확인 후 판단!)
|
|
❌ "이전 배치 있었겠지" (실제 이전 챕터 확인!)
|
|
|
|
✅ 파일을 읽었으면 확인 가능
|
|
✅ "확인 필요" 대신 "파일 읽고 확인"
|
|
✅ 추측이 나온다 = 제대로 검증 안 한 것
|
|
```
|
|
|
|
**2. 판단 회피 금지 (v2.6.0 신규)**
|
|
```
|
|
❌ 명백한 오류를 ⚠️로 약하게 분류
|
|
❌ 타임라인 역행을 "주의 필요"로 표시
|
|
❌ "확인 필요"로 넘기기
|
|
|
|
✅ 역행 발견 = 즉시 🔴 긴급
|
|
✅ 파일 읽고 명확히 판정
|
|
✅ 회피하지 말고 결론 도출
|
|
```
|
|
|
|
**3. 확인 누락 금지 (v2.6.0 신규)**
|
|
```
|
|
❌ 타임라인 이상 발견했는데 파일 안 읽기
|
|
❌ 배치 경계인데 이전 챕터 안 확인
|
|
❌ 중복 의심인데 내용 비교 안 하기
|
|
|
|
✅ 이상 발견 시 해당 파일 전체 읽기
|
|
✅ 배치 시작 시 이전 배치 마지막 챕터 확인
|
|
✅ 의심되면 반드시 확인
|
|
```
|
|
|
|
**4. 기타 금지사항**
|
|
```
|
|
❌ 검증 중 수정 → FIX 모드에서!
|
|
❌ 사소한 문제 숨기기 (모두 기록!)
|
|
❌ 보고서 누락
|
|
```
|
|
|
|
### 🚨 실제 사례로 배우기 (v2.6.0 신규)
|
|
|
|
**❌ 잘못된 검증 (실제 발생):**
|
|
```markdown
|
|
ch-028 타임라인 관련:
|
|
- 시간 역행: ⚠️ **주의 필요**
|
|
- ch-025~027은 4월인데, ch-028은 3월로 역행
|
|
- 만주 서사 회상/병렬 진행으로 보이나, 명확한 표시 부족
|
|
```
|
|
|
|
**문제점:**
|
|
1. "회상/병렬로 보이나" → 추측! (파일 읽으면 확인 가능)
|
|
2. "⚠️ 주의 필요" → 약한 분류! (역행은 🔴 긴급)
|
|
3. 수정 권고 없음 → 판단 회피!
|
|
|
|
**✅ 올바른 검증:**
|
|
```markdown
|
|
ch-028 타임라인 역행 🔴 긴급:
|
|
- ch-027: 1946.04.05~23
|
|
- ch-028: 1946.03.05~15 ← 역행!
|
|
- 파일 확인 결과:
|
|
- 제목에 "회상" 표시 없음
|
|
- 본문 시제: 일반 과거형 (회상 아님)
|
|
- Part 헤더: 회상 표시 없음
|
|
- 판정: 명백한 타임라인 역행 오류
|
|
- 조치: FIX 모드에서 즉시 수정 필요
|
|
```
|
|
|
|
---
|
|
|
|
**검증 = 전체 읽기 + 확인 + 기록 (추측 ❌)**
|
|
|
|
---
|
|
|
|
## 🔗 연계 모드
|
|
|
|
```
|
|
VERIFICATION (검증, 기록)
|
|
↓
|
|
FIX (일괄 수정)
|
|
↓
|
|
POLISH (가독성/문체)
|
|
```
|
|
|
|
---
|
|
|
|
*검증은 기록만! 수정은 FIX 모드에서!*
|