2.5 KiB
2.5 KiB
검증 강화 — 설계 (Phase 2)
작성: 2026-06-02 · 상태: 구현됨 · 선행: Phase 1 branch-spec
1. 범위 (G5)
요구사항 4a("문서를 생성·작업할 때마다 검증")를 링크 너머로 강화 + 보고→수정 왕복 단축.
| 산출물 | 변경 |
|---|---|
.claude/hooks/wiki_structure_lint.py |
--hook(매 저장) 모드에 C1(섹션)+C3(선택조건) 조건부 추가 |
.claude/commands/lint.md |
--fix-plan 모드 추가 |
비범위: G3 체크리스트 enforcement(G3 자체가 Phase 1에서 제외됨), 한국어 윤문(G4 → Phase 3).
2. 확정된 설계 결정
| ID | 결정 | 근거 |
|---|---|---|
| DD1 | hook: C2(링크)는 항상, C1/C3는 완성 선언 시에만 | 작성 중간엔 섹션이 당연히 비어 있어 C1/C3가 false-positive 노이즈가 됨. 링크는 항상 잘못된 것 |
| DD2 | "완성 선언" 판정: branch-note는 status_label ∉ {in-progress, abandoned}(review/merged 등), 그 외는 status ∉ {raw, draft} |
abandoned는 의도된 미완성이라 완성 아님. status 기반이 일반화 가능 |
| DD3 | --file/--all(권위 검사)은 변경 없음 — 항상 전체 C1+C2+C3 |
/depth·bulk audit의 정확성 유지. 게이트는 매 저장 advisory 경로에만 |
| DD4 | hook은 계속 non-blocking(exit 0, stderr 경고) | 저장을 막지 않음. 차단은 PreToolUse wiki_claim_gate.py 담당 |
| DD5 | --fix-plan은 계획만 구조화, 승인된 항목만 적용. 무단 자동수정 금지 |
lint의 기존 "보고만" 원칙 유지하며 왕복만 단축 |
3. 검증 (구현 후 실측)
- in-progress 노트 hook → C2만, 경고 0 (full 모드에선 C1 5건 FAIL — 게이트가 실제로 억제함을 확인).
- review 노트 hook → C1 발동(MISSING_SECTION 2건), exit 0(non-blocking).
is_completeness_checkable()헬퍼가 source_type/status_label/status로 분기.
4. 요구사항 충족
| 요구사항 | Phase 2 |
|---|---|
| 4a 매번 검증 | C2 항상 + 완성 선언 시 C1/C3 → "매번"을 노이즈 없이 달성 |
| 2 비효율 x | --fix-plan으로 보고→수정 왕복 단축 |
5. 리스크
- 완성 선언 안 한 노트는 매 저장 시 C1/C3 미검사 → 단,
/depth·--all이 권위 검사로 포착(DD3). hook은 보조. - 잘못 채운 status_label(예: 증거등급 오기입)이 C1/C3를 트리거할 수 있음 → 무해(advisory), 오히려 오기입 발견에 도움.