Compare commits

..

2 Commits

Author SHA1 Message Date
Alex
e8c671b521 Add report validity check protocol to prevent stale report usage
Problems fixed:
- Reports created before file modifications caused incorrect info
- POLISH batch-05 (2026-01-21) reported issues in files modified later (2026-01-24)
- No validation between report date and file modification time

Changes:
1. Created report-management.md (v1.0.0)
   - Report validity check protocol
   - File modification time vs report date comparison
   - Invalidation conditions and procedures

2. Updated verification-mode.md (v2.8.0 → v2.9.0)
   - Added report validity check section
   - Mandatory checklist before reading reports
   - Clear user reporting format (valid/invalid)

3. Updated polish-mode.md (v2.3.0 → v2.4.0)
   - Added report validity check section
   - Mandatory checklist before reading reports
   - Clear user reporting format (valid/invalid)

Process improvement:
- Before reading any report: check file mod times
- Report date < any file mod time → invalid → re-verify
- Prevents using outdated reports after FIX/repositioning

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-25 01:03:36 +09:00
Alex
bb5fe7cac9 feat(verification): v2.8.0 - 강제 워크플로우 추가
검증→FIX→재검증 사이클 필수화:
- 검증 후 문제 발견 시 FIX 모드 필수 진입
- 재검증 완료 전까지 다른 모드 전환 금지
- 사용자 명시적 연기 시에만 예외 허용
- 다음 세션 시작 시 미완료 FIX 경고

문제 분석:
- 1권 검증 후 25건 발견했으나 FIX 미실행
- 프로세스 강제화 없어서 계속 같은 문제 재발견
- 강제 규칙으로 재발 방지

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-24 18:05:14 +09:00
3 changed files with 623 additions and 6 deletions

View File

@@ -1,10 +1,10 @@
# POLISH 모드 프로토콜 # POLISH 모드 프로토콜
> **버전:** 2.3.0 > **버전:** 2.4.0
> **최종 수정:** 2026-01-20 > **최종 수정:** 2026-01-25
> **호환:** CWS Writing Guide v4.2.0+ > **호환:** CWS Writing Guide v4.2.0+
> **용도:** 문장 품질 다듬기 (내용 수정 없음) > **용도:** 문장 품질 다듬기 (내용 수정 없음)
> **주요 변경:** MODIFICATION 모드와의 경계 명확화 (구체적 예시 추가) > **주요 변경:** 리포트 유효성 검증 추가 - 파일 수정 시 리포트 무효화
--- ---
@@ -65,6 +65,98 @@ STARTED: 2026-01-20 15:30
--- ---
## 📋 리포트 유효성 검증 (v2.4.0 신규)
> **참고:** `standards/report-management.md` 참조
### 🚨 필수: 리포트 읽기 전 유효성 체크
**문제:**
```
리포트 작성 후 파일이 수정되면 리포트가 과거 상태를 반영
→ 잘못된 정보를 사용자에게 전달하는 심각한 오류!
```
**해결:**
```
리포트 읽기 전 반드시 유효성 검증!
```
### 검증 절차
**1단계: 리포트 날짜 확인**
```bash
# polish-batch-05.md에서 날짜 추출
grep "시작\|완료" polish-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. 리포트 작성일 < 파일 최종 수정일
**사용자 보고 형식:**
**리포트 유효:**
```
polish-batch-05.md 확인:
- 작성일: 2026-01-21
- 파일 수정: 2026-01-20 (리포트 이전)
- 상태: ✅ 유효
배치 5 (ch-041~050): 이미 완료
- 수정: 0건
- 다음 배치로 진행
```
**리포트 무효:**
```
polish-batch-05.md 확인:
- 작성일: 2026-01-21
- 파일 수정: 2026-01-24 (리포트 이후!)
- 상태: ❌ 무효
이유: ch-028~030 재배치로 파일 수정됨
→ 배치 5 재검증 필요
```
### 체크리스트
**모든 리포트 읽기 전:**
- [ ] 리포트 파일 존재 확인
- [ ] 리포트 작성 날짜 추출
- [ ] 대상 파일 목록 확인 (RANGE 기준)
- [ ] 각 파일 최종 수정 시간 확인
- [ ] 리포트 날짜 < 파일 수정? → 무효
- [ ] 무효 시: 사용자에게 명확히 보고 + 재검증
- [ ] 유효 시: 리포트 내용 사용
---
## 📋 POLISH 모드 개요 ## 📋 POLISH 모드 개요
**POLISH 모드는:** **POLISH 모드는:**

View File

@@ -0,0 +1,307 @@
# 리포트 관리 프로토콜
> **버전:** 1.0.0
> **최종 수정:** 2026-01-25
> **호환:** CWS Writing Guide v4.2.0+
> **용도:** 모든 검증/POLISH 리포트의 유효성 관리
---
## 🚨 핵심 문제
### 리포트 재사용 시 발생하는 오류
**시나리오:**
```
2026-01-21: POLISH 완료 → polish-batch-05.md 생성 (ch-046, 047, 050 문제 기록)
2026-01-24: FIX 모드로 ch-028, 029, 030 재배치 → 파일 수정
2026-01-25: polish-batch-05.md 읽음 → "문제 있다" 보고 ❌ 잘못됨!
```
**왜 잘못되었나?**
- 리포트는 **2026-01-21 시점**의 파일 상태 반영
- 하지만 **2026-01-24에 파일 수정됨**
- 리포트가 현재 파일 상태와 불일치
**결과:**
- 사용자에게 잘못된 정보 전달
- "문제 있다" → 확인하면 "문제 없다" → 혼란
---
## ✅ 해결 방법: 리포트 유효성 검증
### 필수 절차
**리포트 읽기 전 체크:**
```python
def read_report(report_file):
# 1. 리포트 존재 확인
if not exists(report_file):
return "리포트 없음 → 새로 검증 필요"
# 2. 리포트 날짜 확인
report_date = get_report_date(report_file)
# 3. 대상 파일들의 최종 수정 시간 확인
target_files = get_target_files(report_file) # ch-041~050 등
latest_file_mod = max(f.modified_time for f in target_files)
# 4. 유효성 검증
if latest_file_mod > report_date:
return "❌ 리포트 무효 (파일이 리포트 이후 수정됨) → 재검증 필요"
else:
return "✅ 리포트 유효 → 사용 가능"
```
### 구체적 절차
#### 1단계: 리포트 날짜 추출
```bash
# 리포트 파일에서 날짜 찾기
grep "검증일\|시작\|완료" polish-batch-05.md
# 예시 출력:
# > **시작:** 2026-01-21
# **검토 완료:** 2026-01-21
```
#### 2단계: 대상 파일 수정 시간 확인
```bash
# Windows
ls -l "l:\내 드라이브\Writing\1945-novel\volumes\vol-01\chapters\ch-04*.md" | awk '{print $6, $7, $8, $9}'
# Unix/Mac
stat -c "%y %n" chapters/ch-04*.md
```
#### 3단계: 비교 및 판정
```markdown
리포트 날짜: 2026-01-21
파일 수정 시간:
- ch-041.md: 2026-01-20 (리포트 이전) ✅
- ch-042.md: 2026-01-24 (리포트 이후!) ❌
판정: 리포트 무효 → 재검증 필요
```
---
## 📋 리포트 유효성 검증 체크리스트
### VERIFICATION 모드
```markdown
- [ ] 1. validation-batch-XX.md 존재 확인
- [ ] 2. 리포트 작성 날짜 추출
- [ ] 3. 대상 챕터들의 최종 수정 시간 확인
- [ ] 4. 리포트 날짜 < 파일 수정 시간? → 무효
- [ ] 5. 무효 시: 리포트 삭제 또는 아카이브
- [ ] 6. 재검증 실행
```
### POLISH 모드
```markdown
- [ ] 1. polish-batch-XX.md 존재 확인
- [ ] 2. 리포트 작성 날짜 추출
- [ ] 3. 대상 챕터들의 최종 수정 시간 확인
- [ ] 4. 리포트 날짜 < 파일 수정 시간? → 무효
- [ ] 5. 무효 시: 리포트 삭제 또는 아카이브
- [ ] 6. 재검증 실행
```
---
## 🔄 리포트 무효화 조건
### 자동 무효화
**다음 경우 리포트 자동 무효:**
1. **파일 수정**
- 대상 파일 중 하나라도 리포트 이후 수정됨
- 예: ch-046.md 수정 시간 > polish-batch-05.md 작성 시간
2. **파일 재배치**
- FIX 모드에서 챕터 번호 변경
- 예: ch-028 → ch-022 이동 시 모든 관련 배치 리포트 무효
3. **날짜 차이**
- 리포트 작성일과 현재 날짜 차이 7일 이상 (선택)
- 파일 수정 없어도 재검증 권장
### 수동 무효화
**사용자가 명시적으로 요청 시:**
- "리포트 무시하고 재검증해"
- "처음부터 다시 검증해"
---
## 📝 리포트 관리 Best Practices
### 1. 타임스탬프 명확히 기록
```markdown
# POLISH 배치 5 진행 리포트
> **시작:** 2026-01-21 14:30
> **완료:** 2026-01-21 16:45
> **대상 파일 수정 시간 기준:** 2026-01-21 16:45까지
---
## 검증 기준 시점
이 리포트는 **2026-01-21 16:45** 시점의 파일 상태를 반영합니다.
이후 파일이 수정되었다면 이 리포트는 무효입니다.
```
### 2. 리포트 버전 관리
```markdown
# 옵션 1: 날짜 포함 파일명
polish-batch-05-20260121.md
polish-batch-05-20260124.md # 재검증 시
# 옵션 2: 리포트 내 버전 기록
> **버전:** v1 (2026-01-21 초기)
> **버전:** v2 (2026-01-24 재검증)
```
### 3. 아카이브
```markdown
# 무효화된 리포트는 삭제 대신 아카이브
volumes/vol-01/reports/archive/
├── polish-batch-05-20260121-INVALID.md
└── validation-batch-02-20260120-INVALID.md
# 현재 유효한 리포트만 루트에
volumes/vol-01/
├── polish-batch-05.md # 최신 유효 리포트
└── validation-batch-02.md
```
---
## 🚨 Claude가 해야 할 것
### 리포트 읽기 전
```markdown
1. 리포트 파일 존재 확인
2. 리포트 작성 날짜 확인
3. 대상 파일 수정 시간 확인 (ls -l 또는 stat)
4. 유효성 판정:
- 유효: 리포트 사용 → 사용자에게 보고
- 무효: 리포트 무시 → "재검증 필요" 보고
```
### 사용자에게 보고
**✅ 리포트 유효 시:**
```
polish-batch-05.md 확인 결과:
- 작성일: 2026-01-21
- 파일 수정: 2026-01-20 (리포트 이전)
- 상태: ✅ 유효
배치 5 (ch-041~050): 이미 완료
- 수정: 0건
- 다음 배치로 진행할까요?
```
**❌ 리포트 무효 시:**
```
polish-batch-05.md 확인 결과:
- 작성일: 2026-01-21
- 파일 수정: 2026-01-24 (리포트 이후!) ❌
- 상태: 무효
이유: ch-028, ch-029, ch-030 재배치로 인한 파일 수정
배치 5를 재검증하겠습니다.
```
---
## 🔧 구현 가이드
### Bash 명령어
```bash
# 리포트 날짜 추출
REPORT_DATE=$(grep -oP '(?<=완료:\s)\d{4}-\d{2}-\d{2}' polish-batch-05.md)
# 대상 파일 최종 수정 시간 확인 (Unix timestamp)
LATEST_MOD=$(stat -c %Y chapters/ch-04*.md | sort -n | tail -1)
# 리포트 날짜를 Unix timestamp로 변환
REPORT_TS=$(date -d "$REPORT_DATE" +%s)
# 비교
if [ $LATEST_MOD -gt $REPORT_TS ]; then
echo "❌ 리포트 무효 (파일이 리포트 이후 수정됨)"
else
echo "✅ 리포트 유효"
fi
```
---
## 📊 프로세스 통합
### VERIFICATION 모드 진입 시
```
1. WORK-MODE.txt 확인
2. BATCH 확인 → validation-batch-XX.md 찾기
3. 리포트 유효성 검증 ← NEW!
- 유효: 리포트 읽고 계속
- 무효: 리포트 삭제, 재검증
4. 검증 진행
```
### POLISH 모드 진입 시
```
1. WORK-MODE.txt 확인
2. BATCH 확인 → polish-batch-XX.md 찾기
3. 리포트 유효성 검증 ← NEW!
- 유효: 리포트 읽고 다음 배치로
- 무효: 리포트 삭제, 재검증
4. POLISH 진행
```
---
## ✅ 체크리스트 (Claude용)
**모든 리포트 읽기 전 필수:**
- [ ] 리포트 파일 존재 확인
- [ ] 리포트 작성 날짜 추출
- [ ] 대상 파일들 목록 확인
- [ ] 각 파일의 최종 수정 시간 확인
- [ ] 리포트 날짜와 파일 수정 시간 비교
- [ ] 하나라도 리포트 이후 수정됨? → 무효
- [ ] 무효 시: 사용자에게 명확히 보고
- [ ] 유효 시: 리포트 내용 사용
---
## 🔗 관련 문서
- `verification-mode.md` - 검증 모드 프로토콜
- `polish-mode.md` - POLISH 모드 프로토콜
- `fix-mode.md` - FIX 모드 프로토콜
---
*리포트는 시점의 스냅샷! 파일 수정 후엔 재검증 필수!*

View File

@@ -1,10 +1,138 @@
# 검증 모드 프로토콜 # 검증 모드 프로토콜
> **버전:** 2.7.0 > **버전:** 2.9.0
> **최종 수정:** 2026-01-24 > **최종 수정:** 2026-01-25
> **호환:** CWS Writing Guide v4.2.0+ > **호환:** CWS Writing Guide v4.2.0+
> **용도:** 전체 검증 및 기록 (수정 없음) > **용도:** 전체 검증 및 기록 (수정 없음)
> **주요 변경:** 소설 검증 특성 반영, 병렬 서사 정상 판정, 물리적 모순 확인 절차 추가 > **주요 변경:** 리포트 유효성 검증 추가 - 파일 수정 시 리포트 무효화
---
## 🚨 강제 워크플로우 (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. ❌ 문제를 보고만 하고 수정 안 하기
--- ---
@@ -65,6 +193,96 @@ STARTED: 2026-01-20 14:20
--- ---
## 📋 리포트 유효성 검증 (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 신규) ## 🔄 통합 검증 (최종 단계, v2.5.0 신규)
### 개요 ### 개요