# 리네임 안전 프로토콜 > **버전:** 2.1.0 > **최종 수정:** 2026-01-31 > **호환:** CWS Writing Guide v3.3.0+ > **용도:** 화수 변경/리넘버링 시 안전한 절차 > **주요 변경:** AI 강제 실행 규칙 추가 (절대 무시 불가) --- ## 🚨 AI 강제 실행 규칙 (v2.1.0 신규 - 절대 무시 불가!) ### ⚠️ 이 문서는 가이드라인이 아닙니다. 체크리스트입니다. **모든 절차는 강제 실행입니다. "참고", "건너뛰기", "판단으로 생략" 절대 금지.** --- ### 규칙 1: 리네임 전 백업 강제 **리네임 시작 전 반드시 실행:** ``` 🔍 리네임 전 백업 체크리스트 (강제 실행): - [ ] Git 현재 상태 clean working tree 확인 - [ ] Git 커밋 완료 (백업) - [ ] 커밋 메시지에 "리네임 전 백업" 명시 **백업 없이 리네임 시작 절대 금지!** **데이터 손실 위험 - 백업 필수!** ``` --- ### 규칙 2: 리네임 순서 강제 확인 **리네임 시작 전 반드시 판단:** ``` 🔍 리네임 순서 판단 체크리스트 (강제 실행): - [ ] 리네임 방향 확인 - 삽입/분할 (번호 +1) → 역순 필수 (큰 번호→작은 번호) - 삭제/병합 (번호 -1) → 정순 필수 (작은 번호→큰 번호) - [ ] 덮어쓰기 위험 체크 - 정순 시 다음 파일이 이미 바뀐 파일인가? - 역순 시 안전한가? - [ ] 또는 2단계 리네임 사용 (temp 파일) **잘못된 순서로 리네임 시 데이터 손실!** **순서 판단 없이 리네임 시작 절대 금지!** ``` --- ### 규칙 3: 리네임 후 검증 강제 **리네임 완료 후 반드시 실행:** ``` 🔍 리네임 후 검증 체크리스트 (강제 실행): - [ ] 파일 개수 확인 (리네임 전 = 리네임 후) - [ ] temp 파일 0개 확인 (2단계 방법 사용 시) - [ ] 각 파일 헤더 번호 = 파일명 확인 - [ ] 타임라인 연속성 확인 - [ ] summary/plot 파일 번호 수정 확인 **하나라도 ❌ 발견 시 즉시 Git 롤백!** ``` --- ### 위반 시 처리 **위 규칙 중 하나라도 위반 시:** - 리네임 즉시 중단 - Git 롤백 실행 - 사용자에게 즉시 보고 - 규칙 준수 후 재실행 --- ## 🚨 왜 리네임이 위험한가? ### 덮어쓰기 문제 ``` 시나리오: ch-030~060을 ch-031~061로 변경 ❌ 정순으로 하면: ch-030 → ch-031 (OK, ch-031 자리 비어있음) ch-031 → ch-032 (❌ ch-031은 이미 바뀐 ch-030!) → 원래 ch-031 데이터 손실! ✅ 역순으로 하면: ch-060 → ch-061 (OK) ch-059 → ch-060 (OK, ch-060 자리 비어있음) ... ch-030 → ch-031 (OK) → 안전! ``` --- ## 📋 리네임 유형 | 유형 | 방향 | 방법 | |------|------|------| | **삽입** | 번호 +1 | 역순 | | **삭제** | 번호 -1 | 정순 | | **분할** | 번호 +1 | 역순 | | **병합** | 번호 -1 | 정순 | --- ## 🔄 방법 1: 역순/정순 리네임 ### 삽입 시 (번호 +1) - 역순! ```bash # ch-029와 030 사이에 삽입 # → ch-030~060을 ch-031~061로 # 역순으로! (60부터 30까지) mv ch-060.md ch-061.md mv ch-059.md ch-060.md mv ch-058.md ch-059.md ... mv ch-030.md ch-031.md # 새 화 생성 # ch-030.md 작성 ``` ### 삭제 시 (번호 -1) - 정순! ```bash # ch-029 삭제 # → ch-030~060을 ch-029~059로 # ch-029 백업/삭제 mv ch-029.md _backup/ch-029.md # 정순으로! (30부터 60까지) mv ch-030.md ch-029.md mv ch-031.md ch-030.md ... mv ch-060.md ch-059.md ``` --- ## 🔄 방법 2: 2단계 리네임 (더 안전) ### 1단계: 임시 이름으로 ```bash # 모든 대상 파일을 임시 이름으로 mv ch-030.md ch-030-temp.md mv ch-031.md ch-031-temp.md mv ch-032.md ch-032-temp.md ... mv ch-060.md ch-060-temp.md ``` ### 2단계: 최종 이름으로 ```bash # 임시 이름에서 최종 이름으로 mv ch-030-temp.md ch-031.md mv ch-031-temp.md ch-032.md ... mv ch-060-temp.md ch-061.md ``` **장점:** 순서 상관없이 안전 **단점:** 두 번 작업 --- ## ✅ 리네임 체크리스트 ### 리네임 전 ``` - [ ] 영향 범위 분석 완료 - [ ] Git 현재 상태 커밋 (백업!) - [ ] 리네임 방향 결정 (역순/정순) - [ ] 대상 파일 목록 작성 ``` ### 리네임 중 ``` - [ ] 파일명 변경 (순서 주의!) - [ ] 헤더 화수 수정 # 2권 30화 → # 2권 31화 - [ ] 타임라인 확인 (변경 필요 시) ``` ### 리네임 후 ``` - [ ] 파일명 = 헤더 화수 일치 확인 - [ ] summary 해당 챕터 번호 수정 - [ ] plot 해당 챕터 번호 수정 - [ ] 타임라인 연속성 확인 - [ ] Git 커밋 ``` --- ## 📊 영향받는 파일 ### 챕터 파일 ``` 파일명: ch-XXX.md → ch-YYY.md 헤더: # X권 XXX화 → # X권 YYY화 ``` ### Summary 파일 ``` summary-001-030.md 내용: "### ch-030: 제목" → "### ch-031: 제목" 또는 summary 자체 재생성 ``` ### Plot 파일 ``` plot-master.md: "30화: 제목" → "31화: 제목" vol-XX-plot-026-030.md → vol-XX-plot-027-031.md (필요시) ``` --- ## 🔧 자동화 스크립트 예시 ### 삽입 (역순 리네임) ```bash #!/bin/bash # 삽입 위치 이후 번호 +1 START=30 END=60 for ((i=END; i>=START; i--)); do OLD=$(printf "ch-%03d.md" $i) NEW=$(printf "ch-%03d.md" $((i+1))) if [ -f "$OLD" ]; then mv "$OLD" "$NEW" echo "Renamed: $OLD → $NEW" fi done ``` ### 헤더 일괄 수정 ```bash #!/bin/bash # 헤더 화수 일괄 수정 for FILE in ch-*.md; do # 파일명에서 화수 추출 NUM=$(echo "$FILE" | grep -oP '\d+') NUM_CLEAN=$(echo $NUM | sed 's/^0*//') # 헤더 수정 (권 번호는 유지) sed -i "s/# \([0-9]*\)권 [0-9]*화:/# \1권 ${NUM_CLEAN}화:/" "$FILE" done ``` --- ## 🚫 리네임 금지사항 ``` ❌ 백업 없이 리네임 ❌ 순서 무시 (덮어쓰기 위험!) ❌ 헤더 수정 누락 ❌ summary/plot 수정 누락 ❌ Git 커밋 없이 종료 ``` --- ## 💡 팁 ### 대규모 리네임 시 ``` 1. 작은 범위로 테스트 먼저 2. Git으로 롤백 가능한 상태 유지 3. 2단계 방법 권장 (더 안전) 4. 리네임 후 즉시 검증 ``` ### 실수 발생 시 ``` git checkout -- . → 마지막 커밋 상태로 복구 ``` --- *리네임은 신중하게! 백업 필수, 순서 중요!*