Files
llm-wiki/docs/superpowers/specs/2026-06-02-validation-strengthening-design.md
T

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), 오히려 오기입 발견에 도움.