init: llm-wiki-haness 하네스 설계
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# 검증 강화 — 설계 (Phase 2)
|
||||
|
||||
> 작성: 2026-06-02 · 상태: 구현됨 · 선행: [Phase 1 branch-spec](2026-06-02-branch-spec-assembly-pipeline-design.md)
|
||||
|
||||
## 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), 오히려 오기입 발견에 도움.
|
||||
</content>
|
||||
Reference in New Issue
Block a user