init: document-haness 설계

This commit is contained in:
DongHyeonka
2026-07-23 17:52:22 +09:00
parent 993788c14e
commit d6f78f92a0
127 changed files with 20099 additions and 1 deletions
@@ -0,0 +1,137 @@
# 섹션 작성 지침
한 섹션은 하나의 독자 질문을 닫는 최소 단위다. 모든 블록을 기계적으로 넣지 말고 질문에 필요한 블록만 선택한다.
## 목차
- 공통 section card와 block 순서
- 역할별 pattern
- example, code, validation 계약
- 복잡도 제어와 완료 check
## 공통 섹션 카드
작성 전에 `04_logic_map.json.sections[]`에 다음을 고정한다.
- 섹션 역할과 선행 섹션
- 독자 질문과 쉬운 답 한 문장
- 새 용어와 claim ID
- 사용할 예시의 상태
- 코드나 표가 필요한 이유
- 검증과 한계
- 다음 섹션으로 가는 이유
## 기본 블록 순서
1. **Orientation** — 지금 답할 질문과 왜 필요한지 말한다.
2. **Plain answer** — 전문용어 없이 결론을 먼저 준다.
3. **Definition** — 필요한 새 용어만 정의한다.
4. **Example** — 하나의 사례로 개념을 고정한다.
5. **Mechanism** — 책임, 순서, 상태, 의존을 설명한다.
6. **Evidence/code** — 주장을 직접 지지하는 최소 절편을 둔다.
7. **Table** — 산문으로 추적하기 어려운 반복 관계만 옮긴다.
8. **Validation** — 무엇이 검사하고 어디서 실패하는지 밝힌다.
9. **Boundary** — 비용, 예외, 증명하지 않는 것을 모은다.
10. **Transition** — 다음 질문이 왜 생기는지 연결한다.
## 역할별 패턴
### 실패 장면
- 한 가지 재현 가능한 증상이나 짧은 가정 코드를 보여 준다.
- 독자가 스스로 실패를 판정할 질문 2~4개를 붙인다.
- 용어 정의와 해결책을 먼저 쏟지 않는다.
- 끝에서 원인 질문을 연다.
### 원리
- 혼동하기 쉬운 축을 먼저 분리한다.
- 압축한 구조 설명보다 앞에서 일상어로 차이를 설명한다.
- 원리 하나를 실제 코드 관계 하나에 대응한다.
- 원리의 적용 한계와 흔한 과설계를 함께 둔다.
### 결정
- 제약→대안→평가 기준→선택→반대 조건 순서를 지킨다.
- 채택안의 이점과 유지비를 같은 표나 문단에서 비교한다.
- 외부 사례는 현재 구현의 증거가 아니라 대조인지 표시한다.
### 전체 지도와 책임
- 전체 구조는 세부보다 먼저 짧은 문단이나 목록으로 제공한다.
- 컨텍스트, 논리 의존, 런타임 순서, 정책 상한을 한 단락에 섞지 않는다.
- 책임 설명은 `owns`, `may_know`, `must_not_know`, `public_contract`, `enforcement` 순서를 권장한다.
### 종단 흐름
- 대표 요청이나 이벤트 하나를 고정한다.
- 시작점, 상태 변화, 외부 경계, 성공, 실패, 재시도, 종료를 시간순으로 쓴다.
- 다른 사례로 전환하면 비교 목적과 다시 사용할 용어를 한 문장으로 알린다.
- 계약 존재와 실제 호출자 배선을 구분한다.
### 강제와 break-it
- 규칙의 이름보다 먼저 “무엇을 어디서 막는가”를 설명한다.
- 위반→검사 장치→첫 실패 지점→관찰 결과 순서로 쓴다.
- 테스트 자체가 검사 대상을 실제로 갖는지 비공허성 검증을 밝힌다.
- 정적 분석이 놓치는 우회 하나 이상을 공개한다.
### 비용과 한계
- 모든 caveat를 본문 사이에 흩뿌리지 않는다.
- `확실한 것`, `아직 아닌 것`, `도입 비용`, `반대 선택이 나은 조건`으로 묶는다.
- 한계가 핵심 주장을 무효화하는지, 적용 범위만 좁히는지 구분한다.
## 예시 상태
예시는 다음 중 하나로 표시한다.
- `hypothetical`: 문제를 설명하기 위해 가정한 예
- `observed`: 고정된 소스나 실행에서 확인한 예
- `derived`: 규칙과 설정에서 유도한 예상
- `recommended`: 현재 배선이 아닌 권장 통합 형태
- `counterexample`: 주장의 경계를 드러내는 반례
“실제”, “현재”, “예시” 같은 표현만으로 상태를 암시하지 않는다.
## 코드 블록
각 코드 블록에는 다음 계약이 필요하다.
- `purpose`: problem, mechanism, proof, break-it 중 하나
- `source`: 원문 경로와 라인 또는 hypothetical
- `focus_lines`: 독자가 볼 줄
- `takeaway`: 코드 뒤 쉬운 한 문장
설치 보일러플레이트와 관계없는 줄은 생략 표시로 줄인다. 코드가 주장을 증명하지 못하면 “모양을 설명하는 예”라고 쓴다.
## 검증 블록
행동 또는 구조 주장마다 가능하면 다음을 둔다.
- `proves`: 직접 확인하는 성질
- `does_not_prove`: 호출자 배선, 운영 효과 등 범위 밖 성질
- `failure_stage`: compile, build, test, runtime, review
- `claim_ids`
테스트 개수만으로 보장 범위를 대신하지 않는다.
quality rules가 evidence marker를 요구하면 factual passage 가까이에 허용 형식, 예를 들어 `<!-- claim:CLM-001 -->` 또는 `[근거: CLM-001]`를 사용한다. marker ID는 `03_evidence_map.json`과 같아야 하며 source citation을 대신하지 않는다.
## 복잡도 제어
- 문단은 질문 하나만 답한다.
- 새 개념 예산은 문장 2개, 문단 2개, 절 7개를 기본으로 한다.
- 절이 여러 상태기계, 세 개 이상의 독립 메커니즘, 두 개 이상의 주 사례를 포함하면 분할하거나 미니 로드맵을 둔다.
- 정밀 식별자 목록은 본문 이해에 필요하지 않으면 표·근거 노트·부록으로 내린다.
- 표의 결론을 산문에서 다시 장황하게 복제하지 않는다.
## 섹션 완료 체크
- 쉬운 답이 기술 세부보다 먼저 있는가.
- claim과 근거가 연결됐는가.
- 새 용어가 ledger와 예산을 지키는가.
- 코드와 본문이 서로 다른 사실을 주장하지 않는가.
- 현재 구현과 권장 미래가 구분됐는가.
- 검증하지 못한 범위를 말했는가.
- 다음 절이 단순 나열이 아니라 앞 답에서 생긴 질문인가.