quad/.claude/base
qwreey 40a5daf694
tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격
사용자 제기 — doc-check.py가 정규식으로 결정론적 판정을 하는데 표기가 흔들리면
문제가 커지니, 정규식을 늘리기보다 "예상 가능 범위"를 컨벤션으로 좁히는 게 싸지
않냐. 실측해보니 날짜 표기는 이미 100% 균일해서 고칠 게 없었고(강제 장치 없이),
드리프트는 절 인용 쪽이었다 — WARN 86건 중 78건(91%)이 절 참조 불일치.

핵심은 그 78건이 코퍼스가 지저분한 게 아니라 **검사기가 못 읽는 것**이었다는
점이다. 이 코퍼스는 `**볼드**` 줄을 하위 절로 쓰는데 headings()가 `#`만 봤다.

## 동작 변화 (문서 정정으로만 보이지만 게이트가 바뀐다)

- 절 참조 불일치가 **WARN → ERROR**. 이제 절 인용 오류가 커밋을 막는다.
- 절 인식이 `#` 헤딩 + `**볼드**` 절로 확장. 단 볼드는 **빈 줄 다음이나
  리스트 항목 머리**만 인정 — 문단이 줄바꿈되며 우연히 줄머리에 걸린 강조를
  절로 오인하던 걸 커밋 전 감사가 잡아 조였다.
- 인용 길이 상한 60→160자. 60자를 넘으면 매칭 자체가 안 걸려 검사에서
  **조용히** 빠져나갔음(위양성보다 나쁜 구멍).
- 비교를 공백 무시로(줄바꿈 인용 대응), 선두 장식·상태/날짜 태그 정규화,
  `initreq/` 대상 인용은 절 검사 면제(읽기 전용 외부 원본).

## 규약

`conventions.md`에 "문서 표기 규약" 절 신설 — 절 인용 규약(의역 금지, 헤딩은
부분문자열/볼드는 앞부분일치, 태그로 닫히는 볼드 캐비엇, blockquote 함정),
세션은 산문 서수 말고 파일 ID로 지칭. 날짜 마커 라벨 어휘 닫기는 사용자 판단
으로 기각(기계 검사 대상이 아니라 읽는 쪽 판단 재료).

## 결과

절 참조 불일치 78 → 0. 36건은 검사기 수정으로 사라졌고(애초에 위양성), 42건은
인용을 실제 절 제목으로 손으로 고쳤다. 마지막 15건은 서브에이전트 3개에 병렬
위임해 추적 — **설계 서술이 유실된 건은 0건**, 대부분 코드 주석·본문 산문·
주제명처럼 애초에 절이 아닌 걸 절로 인용해온 것이었다.

부수로 드러나 같이 고친 것: onchange-plan이 9차 분할 때 일부러 안 옮긴 절을
잘못된 파일로 가리키던 것, brand-plan이 이미 이행된 정정을 "정정 대상"이라
부르던 것, ROADMAP의 blockquote가 인용 줄바꿈 때문에 깨져 있던 것,
pre-implementation-audit의 해소된 항목이 "아직 안 고침" 절에 남아 있던 것
(사용자 결정으로 "이미 고침"으로 이동).

커밋 전 감사 4라운드(에이전트 8개)를 돌렸고, 발견 추이는 2→2→1→0이다.
매 라운드 발견이 "직전 라운드 수정이 만든 새 결함"이었던 게 특징 — 규약을
세우는 커밋이 그 규약의 첫 위반자가 된다는 걸 실측으로 확인했다. 상세는
.claude/session/2026-08-16-03-doc-check-section-convention.md.

부수: __pycache__를 .gitignore에 추가하고 추적 해제(32e9db0에 실수로 딸려
들어가 있었음). quad-doc-auditor에 작업 트리를 바꾸는 git 명령 금지 규약 추가
— 감사자가 git stash를 걸어 메인 세션 스테이지가 반복적으로 풀렸다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011zk7XHkSfiBfdPLZUQHdZf
2026-08-16 10:47:29 +09:00
..
architecture.md docs: 감사 4라운드 반영 + const는 HUMAN_TODO로 이관(사용자 결정) 2026-08-16 04:01:29 +09:00
attribute-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
bind-system-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
blocker-plan.md docs: 코퍼스 전체 사실관계 감사 — bind-system-plan.md 분할 후 stale 참조 정정 2026-08-14 22:53:24 +09:00
brand-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
component-composition-plan.md docs: 코퍼스 전체 사실관계 감사 — bind-system-plan.md 분할 후 stale 참조 정정 2026-08-14 22:53:24 +09:00
dispatch-core-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
effect-plan.md docs(base): Observer/Effect Leaf dedup 추가 + Tag/Attribute 자기등록 모델 역전 2026-08-14 12:32:17 +09:00
event-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
fallback-plan.md docs: CLAUDE.md 4분할(매 세션 로드 1537→354줄), 워크플로 가짜 초록불 수정 2026-08-16 01:35:02 +09:00
lifecycle-hooks-plan.md docs(base): dispose(value) 시그니처/범위 확정 — question.md 0-B 해소 2026-08-14 06:18:28 +09:00
lifecycle-pattern.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
modifier-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
module-lifecycle-plan.md docs(base): Observer/Effect Leaf dedup 추가 + Tag/Attribute 자기등록 모델 역전 2026-08-14 12:32:17 +09:00
onchange-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
purity-and-effects-plan.md docs(base): bind/store/state 3단계 분할, UI 숏핸드 Tween 지원, existing-instance-bind 기각 2026-08-14 05:10:49 +09:00
ref-plan.md docs: CLAUDE.md 4분할(매 세션 로드 1537→354줄), 워크플로 가짜 초록불 수정 2026-08-16 01:35:02 +09:00
relate-plan.md docs(base): bind/store/state 3단계 분할, UI 숏핸드 Tween 지원, existing-instance-bind 기각 2026-08-14 05:10:49 +09:00
slot-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
source-state-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
store-plan.md tooling: 절 인용 규약 신설 + doc-check 절 참조를 ERROR 게이트로 승격 2026-08-16 10:47:29 +09:00
tag-plan.md docs(base): Observer/Effect Leaf dedup 추가 + Tag/Attribute 자기등록 모델 역전 2026-08-14 12:32:17 +09:00
tween-plan.md docs(audit): 프로젝트 전체 재감사 — 분할 후 잔여 stale 참조 14곳 정정 2026-08-14 00:45:03 +09:00
typing-limits.md docs: 감사 툴링 재시작 검증 + 핸드오버 감사 첫 실동(수렴 실패), 인용 3건 정정 2026-08-16 03:02:33 +09:00
ui-shorthand-plan.md docs(base): bind/store/state 3단계 분할, UI 숏핸드 Tween 지원, existing-instance-bind 기각 2026-08-14 05:10:49 +09:00