# FIX 모드 프로토콜 > **버전:** 2.0.0 > **최종 수정:** 2026-01-25 > **호환:** CWS Writing Guide v4.2.0+ > **용도:** 검증 보고서 기반 일괄 수정 (타임라인 역행 재배치 포함) > **주요 변경:** 챕터 재배치 프로토콜 추가, 리포트 유효성 검증, Git 워크플로우 명확화 --- ## 📋 CHANGELOG ### v2.0.0 (2026-01-25) - Major Update **추가:** - 📌 챕터 재배치 프로토콜 (3-stage 안전 프로세스) - 📌 롤백 메커니즘 및 에러 복구 - 📌 리포트 유효성 검증 (report-management.md 연동) - 📌 Git 커밋 타이밍 명확화 - 📌 영향받는 배치 자동 무효화 **변경:** - 워크플로우 개선 (백업 → 수정 → 검증 → 커밋) - 체크리스트 세분화 ### v1.1.0 (2026-01-20) **추가:** - WORK-MODE.txt 시스템 (컴팩팅 대응) ### v1.0.0 (2025-XX-XX) **초기 버전:** - 기본 FIX 모드 프로토콜 --- ## 🔄 컴팩팅 대응 시스템 ### 일괄 수정 시 WORK-MODE.txt 사용 **FIX 모드 시작 시:** ``` 1. WORK-MODE.txt 파일 생성 --- CURRENT_MODE: FIX READ_FILE: standards/fix-mode.md --- SOURCE_REPORT: validation-report-vol-01.md TOTAL_ISSUES: 45 COMPLETED: 0 NEXT_ISSUE: 1 STATUS: IN_PROGRESS STARTED: 2026-01-25 10:30 --- 2. fix-progress.md 파일 생성 (진행 상황 체크리스트) ``` **각 문제 수정 후:** ``` 1. fix-progress.md에 [x] 표시 2. 수정 내용 기록 3. WORK-MODE.txt의 COMPLETED, NEXT_ISSUE 업데이트 4. 파일 저장 5. 다음 문제 ``` **컴팩팅 후 재개 시:** ``` 1. WORK-MODE.txt 읽기 2. CURRENT_MODE 확인 → FIX 3. READ_FILE 확인 → fix-mode.md (이 파일) 4. SOURCE_REPORT 읽기 → 원본 검증 보고서 5. fix-progress.md 읽기 → 진행 상황 확인 6. NEXT_ISSUE부터 재개 ``` **FIX 완료 시:** ``` 1. 전체 [x] 확인 2. WORK-MODE.txt 삭제 3. 사용자에게 완료 보고 ``` **핵심 원칙:** ``` ❌ 전체 문제를 메모리에서 처리 후 한 번에 기록 ✅ 1개 수정 → 즉시 파일 업데이트 → WORK-MODE.txt 업데이트 → 다음 ``` --- ## 📋 리포트 유효성 검증 (v2.0.0 신규) > **참고:** `standards/report-management.md` 참조 ### 🚨 필수: 검증 보고서 읽기 전 유효성 체크 **FIX 모드 진입 시:** ```bash # 1. 검증 보고서 날짜 확인 grep "검증일" validation-report-vol-01.md # 예: **검증일:** 2026-01-21 # 2. 대상 파일 수정 시간 확인 ls -l chapters/*.md # 3. 유효성 판정 if [ 보고서_날짜 < 파일_수정 ]; then echo "❌ 검증 보고서 무효 → 재검증 필요" else echo "✅ 검증 보고서 유효 → FIX 진행" fi ``` **무효 시 처리:** ``` 검증 보고서 확인: - 작성일: 2026-01-21 - 파일 수정: 2026-01-24 (보고서 이후!) - 상태: ❌ 무효 이유: FIX 모드에서 파일 재배치 발생 → VERIFICATION 재실행 필요 → FIX 모드 중단 ``` --- ## 📋 FIX 모드 개요 **FIX 모드는:** - VERIFICATION 모드의 검증 보고서를 기반으로 - 발견된 문제를 **일괄 수정** - 심각도 순서대로 처리 (🔴 → 🟡 → 🟢) - 타임라인 역행 발견 시 **챕터 재배치** 수행 **핵심 원칙:** ``` VERIFICATION = 발견 + 기록 FIX = 일괄 수정 (재배치 포함) (분리!) ``` **진입 조건:** - VERIFICATION 모드 완료 후 - 검증 보고서 존재 및 유효 **진입 명령:** - "FIX 모드" - "수정 진행해" - "검증 결과 수정해" --- ## 📚 모드 진입 시 읽을 파일 ### 필수 1. 검증 보고서 (VERIFICATION 결과) 2. `standards/report-management.md` - 리포트 유효성 검증 3. `settings/characters-master.md` - 호칭 수정 시 4. `volumes/vol-XX/timeline.md` - 타임라인 수정 시 ### 수정 대상 5. `volumes/vol-XX/chapters/ch-*.md` - 해당 챕터들 --- ## 🎯 FIX 모드 워크플로우 (v2.0.0) ``` 검증 보고서 유효성 체크 ⭐ NEW! ↓ 검증 보고서 읽기 ↓ 심각도별 분류 확인 ↓ Git 현재 상태 확인 (clean working tree) ↓ 🔴 타임라인 역행 → 챕터 재배치 ⭐ NEW! ↓ 🔴 기타 심각 항목 처리 ↓ 🟡 중요 항목 처리 ↓ 🟢 경미 항목 처리 (선택) ↓ 영향받는 배치 리포트 무효화 ⭐ NEW! ↓ Git 커밋 ⭐ 타이밍 명확화 ↓ 재검증 (자동) ⭐ NEW! ↓ POLISH 모드로 전환 (선택) ``` --- ## 📌 챕터 재배치 프로토콜 (v2.0.0 신규) ### 언제 사용하나? **타임라인 역행 발견 시:** ``` 검증 결과: - ch-027: 1946.04.05-23 - ch-028: 1946.03.05-15 ← 역행! 판정: 🔴 긴급 오류 (회상 표시 없음) 조치: ch-028을 올바른 위치로 재배치 ``` ### 3-Stage 안전 프로세스 #### Stage 0: 사전 준비 ```bash # 1. Git 상태 확인 git status # → clean working tree 확인 # 2. 백업 생성 (선택) cp -r chapters/ chapters-backup-$(date +%Y%m%d-%H%M%S)/ # 3. 재배치 계획 확인 # ch-028 (3월) → ch-022 위치로 이동 # 영향받는 파일: ch-022~028 (7개) ``` #### Stage 1: Temp 파일로 이동 ```bash # 목적: 파일 덮어쓰기 방지 # ch-028을 제외한 나머지를 temp로 mv chapters/ch-022.md chapters/temp-023.md mv chapters/ch-023.md chapters/temp-024.md mv chapters/ch-024.md chapters/temp-025.md mv chapters/ch-025.md chapters/temp-026.md mv chapters/ch-026.md chapters/temp-027.md mv chapters/ch-027.md chapters/temp-028.md # ch-028은 temp-022로 mv chapters/ch-028.md chapters/temp-022.md # 검증: temp-022~028 존재 확인 ls chapters/temp-*.md ``` #### Stage 2: 헤더 수정 ```python # 각 temp 파일의 내부 헤더 수정 for file in temp-022.md ~ temp-028.md: old_header = "# 1권 XX화: ..." new_number = extract_number(file) # temp-022 → 22 new_header = f"# 1권 {new_number}화: ..." replace_in_file(file, old_header, new_header) # 검증: 각 파일 헤더 확인 for f in temp-*.md: head -1 $f # "# 1권 22화", "# 1권 23화" 등 확인 ``` #### Stage 3: 최종 이름 변경 ```bash # temp → 최종 파일명 mv chapters/temp-022.md chapters/ch-022.md mv chapters/temp-023.md chapters/ch-023.md mv chapters/temp-024.md chapters/ch-024.md mv chapters/temp-025.md chapters/ch-025.md mv chapters/temp-026.md chapters/ch-026.md mv chapters/temp-027.md chapters/ch-027.md mv chapters/temp-028.md chapters/ch-028.md # 검증: ch-022~028 존재 확인 ls chapters/ch-022.md chapters/ch-023.md ... chapters/ch-028.md # temp 파일 남아있는지 확인 ls chapters/temp-*.md 2>&1 # → "No such file" 확인 ``` #### Stage 4: 검증 ```bash # 1. 파일 개수 확인 ls chapters/ch-*.md | wc -l # → 이전과 동일한 개수 # 2. 헤더 확인 for i in {022..028}; do echo "ch-$i:" head -1 chapters/ch-$i.md done # 3. 타임라인 순서 확인 for i in {022..028}; do grep "타임라인" chapters/ch-$i.md done # → 시간 순서대로 정렬되었는지 확인 ``` ### 롤백 메커니즘 (v2.0.0 신규) **각 Stage 실패 시:** ```bash # Stage 1 실패 (일부만 temp로 이동됨) → 이동된 temp 파일을 원래 이름으로 복구 → mv chapters/temp-023.md chapters/ch-022.md # Stage 2 실패 (헤더 수정 중 에러) → temp 파일은 그대로 (원본 보존됨) → 에러 파일만 다시 수정 시도 → 또는 전체 롤백 # Stage 3 실패 (일부만 최종 이름 변경됨) → 이동된 파일을 temp로 복구 → mv chapters/ch-022.md chapters/temp-022.md → Stage 3 재시도 # 최악의 경우 (복구 불가) → 백업에서 복원 → cp -r chapters-backup-YYYYMMDD-HHMMSS/* chapters/ ``` ### 에러 처리 프로토콜 **에러 발생 시 절차:** 1. **즉시 중단** - 현재 Stage 중단 - 에러 메시지 기록 2. **상태 확인** ```bash ls chapters/ch-*.md ls chapters/temp-*.md ``` 3. **롤백 판단** - Stage 1-2: temp 파일 삭제 → 원본 유지 - Stage 3: temp로 복구 → Stage 3 재시도 4. **사용자 보고** ``` ❌ 재배치 실패 (Stage 2) 에러: ch-025.md 헤더 수정 중 파일 읽기 오류 현재 상태: - temp-022~024: 헤더 수정 완료 ✅ - temp-025: 헤더 수정 실패 ❌ - temp-026~028: 대기 중 조치: 1. temp-025.md 수동 확인 필요 2. 또는 전체 롤백 후 재시도 롤백하시겠습니까? ``` --- ## 📝 수정 유형별 처리 ### 1. 타임라인 역행 → 재배치 (최우선) ```markdown ## 발견 내용 | 위치 | 타임라인 | 문제 | |------|----------|------| | ch-027 | 1946.04.05-23 | - | | ch-028 | 1946.03.05-15 | ← 역행! | ## 조치 1. 재배치 프로토콜 실행 (3-stage) 2. ch-028 → ch-022 위치로 이동 3. ch-022~027 → 한 칸씩 뒤로 4. 검증 완료 ``` ### 2. 설정 충돌 수정 ```markdown ## 발견 내용 | 위치 | 내용 | |------|------| | ch-012:34 | 민준 나이 32→34 불일치 | ## 수정 방법 1. characters-master.md 확인 (정답: 32세) 2. ch-012 열기 3. 34줄 수정: "34세" → "32세" 4. 체크: ✅ ``` ### 3. 타임라인 헤더 형식 수정 ```markdown ## 발견 내용 | 챕터 | 현재 | 올바른 형식 | |------|------|------------| | ch-025 | 타임라인: 1945.05.15 | > **타임라인:** 1945.05.15 | ## 수정 방법 1. ch-025 열기 2. Edit 도구 사용: old_string: "타임라인: 1945.05.15" new_string: "> **타임라인:** 1945.05.15" 3. 체크: ✅ ``` ### 4. 호칭 오류 수정 ```markdown ## 발견 내용 | 위치 | 내용 | |------|------| | ch-018:45 | "윤희 씨" → "서 선생님" (시점 이전) | ## 수정 방법 1. characters-master.md 호칭 규칙 확인 2. ch-018 시점 확인 (첫 만남 직후) 3. 45줄 수정: "윤희 씨" → "서 선생님" 4. 체크: ✅ ``` ### 5. 바텀 제거 ```markdown ## 발견 내용 | 챕터 | 바텀 내용 | |------|----------| | ch-033 | "[33화 끝]" | | ch-041 | "[41화 끝]\n다음 42화:" | ## 수정 방법 1. 해당 챕터 열기 2. "[X화 끝]" 패턴 삭제 3. "다음 X화:" 패턴 삭제 4. 체크: ✅ ``` --- ## 🔗 영향받는 배치 자동 무효화 (v2.0.0 신규) ### 재배치 후 처리 **재배치 완료 후 필수:** ```python # 1. 영향받는 파일 범위 계산 repositioned = "ch-028" new_position = "ch-022" affected_files = ["ch-022", "ch-023", ..., "ch-028"] # 2. 영향받는 배치 계산 # 배치 3: ch-021~030 # affected_files에 ch-022~028 포함됨 affected_batches = ["batch-03"] # 3. 리포트 무효화 for batch in affected_batches: report = f"validation-batch-{batch}.md" if exists(report): # 옵션 A: 삭제 delete(report) # 옵션 B: 아카이브 archive(report, f"archive/{report}.invalid") # 옵션 C: 무효 표시 add_invalid_marker(report) # 4. 사용자 보고 print(f""" 재배치 완료: ch-028 → ch-022 영향받는 배치: - 배치 3 (ch-021~030) → validation-batch-03.md 무효화됨 → 다음 검증 시 재검증 필요 """) ``` --- ## 💾 Git 워크플로우 (v2.0.0 명확화) ### 커밋 타이밍 **원칙:** ``` 각 수정 유형별로 논리적 단위로 커밋 재배치는 별도 커밋 (영향 범위가 크므로) ``` **구체적 타이밍:** #### 1. 재배치 완료 후 즉시 커밋 ```bash # ch-028 재배치 완료 git add chapters/ch-022.md chapters/ch-023.md ... chapters/ch-028.md git commit -m "$(cat <<'EOF' Fix timeline reversal: reposition ch-028 (March) to ch-022 Problem: - ch-027: 1946.04.05-23 (April) - ch-028: 1946.03.05-15 (March) ← reversal! Changes: - ch-028 (old pos) → ch-022 (new pos) - ch-022~027 → shifted to ch-023~028 - Internal headers updated Affected batches: - batch-03 (ch-021~030) invalidated Co-Authored-By: Claude Sonnet 4.5 EOF )" ``` #### 2. 형식 수정 완료 후 커밋 ```bash # 타임라인 헤더 형식 수정 완료 (23건) git add chapters/ch-*.md git commit -m "$(cat <<'EOF' Fix timeline header format in 23 chapters Changes: - "타임라인: YYYY.M.D" → "> **타임라인:** YYYY.M.D" - Chapters: ch-002~008, ch-012~016, ch-020~025 Co-Authored-By: Claude Sonnet 4.5 EOF )" ``` #### 3. 호칭 수정 완료 후 커밋 ```bash git add chapters/ch-*.md git commit -m "Fix honorific inconsistencies (5 instances) ..." ``` **커밋 묶음 예시:** ``` 1st commit: Timeline reversal repositioning (ch-028) 2nd commit: Timeline header format fixes (23 files) 3rd commit: Honorific fixes (5 instances) 4th commit: Bottom text removal (3 files) → 총 4개 커밋 (유형별) ``` ### Git 상태 체크 **FIX 시작 전:** ```bash git status # → clean working tree 확인 # → 미커밋 변경 있으면 먼저 처리 ``` **FIX 중간:** ```bash # 각 커밋 후 git log --oneline -5 # → 커밋 히스토리 확인 ``` **FIX 완료 후:** ```bash git status # → clean working tree 확인 git push # → 원격 저장소에 푸시 ``` --- ## 📊 수정 진행 보고 형식 ```markdown # FIX 모드 진행 보고 > **수정일:** 2026-01-25 > **검증 보고서 기준:** 2026-01-24 --- ## 📊 진행 현황 | 심각도 | 총 건수 | 완료 | 남음 | |--------|--------|------|------| | 🔴 심각 | 3 | 3 | 0 | | 🟡 중요 | 20 | 20 | 0 | | 🟢 경미 | 2 | 0 | 2 (보류) | | **합계** | **25** | **23** | **2** | --- ## ✅ 완료된 수정 ### 🔴 타임라인 역행 재배치 | # | 챕터 | 조치 | 커밋 | |---|------|------|------| | 1 | ch-028 | ch-022로 재배치 | abc123f | **영향받는 배치:** - validation-batch-03.md 무효화됨 ### 🟡 형식 수정 | # | 위치 | 유형 | 수정 내용 | |---|------|------|----------| | 1 | ch-002~008 | 타임라인 헤더 | 형식 수정 | | 2 | ch-012~016 | 타임라인 헤더 | 형식 수정 | | ... | | | | --- ## ⏳ 보류/미완료 | # | 위치 | 유형 | 사유 | |---|------|------|------| | 1 | ch-005:12 | 날짜 겹침 | 🟢 경미, 추후 처리 | | 2 | ch-010:34 | 병렬 서사 | ✅ 정상 (오판) | --- ## 🔄 Git 커밋 히스토리 1. `abc123f` - Fix timeline reversal: reposition ch-028 to ch-022 2. `def456a` - Fix timeline header format in 23 chapters 3. `ghi789b` - Fix honorific inconsistencies (5 instances) --- ## ➡️ 다음 단계 - [x] VERIFICATION 완료 - [x] FIX 완료 (23/25건) - [ ] RE-VERIFICATION (자동 실행 예정) - [ ] POLISH 진행 (선택) ``` --- ## ✅ FIX 모드 체크리스트 (v2.0.0) ### 수정 전 - [ ] 검증 보고서 유효성 확인 ⭐ - [ ] 총 수정 건수 파악 - [ ] 심각도별 분류 확인 - [ ] Git clean working tree 확인 ⭐ - [ ] 백업 생성 (재배치 시) ⭐ ### 수정 중 - [ ] 🔴 타임라인 역행 재배치 (최우선) ⭐ - [ ] 🔴 기타 심각 항목 완료 - [ ] 🟡 중요 항목 완료 - [ ] 🟢 경미 항목 처리 (선택) - [ ] 각 유형별 Git 커밋 ⭐ ### 수정 후 - [ ] 영향받는 배치 리포트 무효화 ⭐ - [ ] 수정 완료 보고 작성 - [ ] Git 푸시 ⭐ - [ ] 재검증 (자동) 대기 ⭐ --- ## 🚫 FIX 모드 금지사항 ``` ❌ 검증 보고서 유효성 체크 생략 (v2.0.0) ❌ Git 상태 확인 없이 수정 시작 ❌ 재배치 시 백업 없이 진행 ❌ 수정하면서 새 문제 발견해도 범위 확장 (→ 다시 VERIFICATION) ❌ 플롯/내용 변경 (→ MODIFICATION 모드에서) ❌ 수정 기록 누락 ❌ Git 커밋 누락 ❌ 영향받는 배치 무효화 누락 (v2.0.0) ``` --- ## 🔗 연계 모드 ``` VERIFICATION (검증, 기록) ↓ FIX (일괄 수정 + 재배치) ← 현재 ↓ RE-VERIFICATION (자동) ↓ POLISH (가독성/문체) ``` --- ## 💡 효율적인 FIX 팁 ``` 1. 타임라인 역행 재배치부터 (영향이 크므로) 2. 같은 유형끼리 묶어서 처리 - 형식 수정 → 한번에 - 호칭 수정 → 한번에 3. 같은 챕터 수정은 한번에 - ch-012에 3건 있으면 한번에 처리 4. 심각도 순서 지키기 - 🔴 먼저, 시간 부족하면 🟢은 보류 5. 수정 후 바로 커밋 - 논리적 단위로 커밋 (롤백 용이) 6. 재배치 후 영향 배치 확인 - 무효화 누락 방지 ``` --- ## 🔧 에러 복구 시나리오 ### 시나리오 1: 재배치 Stage 2 실패 ``` 상황: 헤더 수정 중 파일 읽기 오류 조치: 1. 즉시 중단 2. temp 파일 확인 3. 에러 파일만 수동 수정 4. Stage 2 재개 ``` ### 시나리오 2: Git 충돌 ``` 상황: 푸시 중 리모트 변경 감지 조치: 1. git pull --rebase 2. 충돌 해결 3. git rebase --continue 4. git push ``` ### 시나리오 3: 재배치 후 검증 실패 ``` 상황: 재배치 완료했지만 타임라인 여전히 역행 조치: 1. 재배치 로직 재확인 2. 타임라인 다시 읽기 3. 올바른 위치 재계산 4. 재배치 재실행 ``` --- ## 📋 관련 문서 - `verification-mode.md` - 검증 모드 프로토콜 - `report-management.md` - 리포트 유효성 관리 - `polish-mode.md` - POLISH 모드 프로토콜 --- *FIX는 검증 결과 기반! 새 문제 발견 시 다시 VERIFICATION!*