feat: 공식 문서 근거자료, 브랜치 기능 문서 작성
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# reporting-standards (plugin split)
|
||||
|
||||
Root SSOT: [`rules/reporting-standards.md`](../../../../../rules/reporting-standards.md) (559줄)
|
||||
|
||||
본 폴더는 root rule 을 Antigravity 컨텍스트에서 lazy-load 하기 좋게 4개 sub-file 로 분할한 사본이다. 의미는 root 와 동일. 충돌 시 root 가 진실.
|
||||
|
||||
## 적용 대상
|
||||
|
||||
- wiki research-lane 보고서, multi-file 문서 audit, raw → canonical 추출 권고, 링크 무결성 audit, 적대 리뷰 보고서, 멀티-파일 브레인스토밍, 1개 초과 wiki 파일을 다루는 모든 최종 응답.
|
||||
- 미적용: trivial 단일 파일 편집, 한 위치에서의 짧은 Q&A, 셸 명령 출력.
|
||||
|
||||
## Sub-file index (필요 시점에 정독)
|
||||
|
||||
| Sub-file | 다루는 root section | 필독 시점 |
|
||||
|---|---|---|
|
||||
| [`output-split.md`](output-split.md) | Output Split Policy | 멀티-파일 / 멀티-findings 작성 직전 |
|
||||
| [`report-template.md`](report-template.md) | §0 Source roots / §1 한눈 요약 / §2 Evidence Matrix / §3 Coverage / §3-1 Verdict 산식 / §5~§8 + Anti-Patterns | 보고서 본문 작성 직전 |
|
||||
| [`findings-template.md`](findings-template.md) | §4 Per-File Findings (deep template + single/zero-finding gates) + §4-1 Adversarial Review | per-file 분석 시 |
|
||||
| [`verification-rules.md`](verification-rules.md) | §7.1 self-grep 카운트 규칙 (V/P/C/D/G/U) + §7.2 실행 명령 + 통계 fabrication 차단 | verbatim quote 가 §4 에 있을 때 |
|
||||
|
||||
## Language Contract (root 와 동일, 항상 적용)
|
||||
|
||||
- 본문 산문은 사용자 언어. 한국어 사용자 → 한국어 본문. 영어 사용자 → 영어 본문.
|
||||
- 사용자 언어 무관 영어 유지: 섹션 필드명 (`Verdict`, `Evidence Matrix`, `Status` 등), Status 값 (`READ_FULL`, `READ_PARTIAL`, `NOT_READ`, `BLOCKED`), 명명된 실패 라벨 (`FACT`, `INFERENCE`, `FILENAME_INFERENCE`, `MEMORY_HALLUCINATION`, `CONFIDENCE_WITHOUT_READ`, `BATCH_ASSUMPTION`, `UNVERIFIED`), 파일 경로 / wikilink target / frontmatter 필드명.
|
||||
- bilingual mirroring 금지 — 한 본문, 한 언어.
|
||||
|
||||
## Antigravity-specific 메모
|
||||
|
||||
| 항목 | Antigravity 컨텍스트 |
|
||||
|---|---|
|
||||
| Hook G1 (verification-rules.md §7.1 의 형식 검사) | PreToolUse `wiki_hard_gate.py` 가 자동 enforce — `docs/superpowers/specs/*.md` write 시 §7.1 에 `$ sed -n` / `$ grep -nF` 명령이 0건이면 deny |
|
||||
| Hook G2 (Anti-Patterns + Contract 7) | 금지어 ("100%", "완벽" 등) 가 verbatim quote 밖에 있으면 deny |
|
||||
| Hook G3 (§3-1 Verdict 산식) | `Verdict: COMPLETE` 자가 라벨링 + `M==N AND P==R` 산식 부재 시 deny |
|
||||
| Hook G4 (findings-template.md §4-1 존재 검사) | ≥5 findings master report 인데 §4-1 Adversarial Review 부재 시 deny |
|
||||
| Stop hook 한계 | chat 본문 응답은 enforce 불가. specs/ 외 경로 (`raw/`, `wiki/`) 작성도 hook 미커버. agent self-check 단독. |
|
||||
|
||||
자세한 hook 동작은 [`~/.gemini/antigravity-cli/hooks/README.md`](file:///home/donghyeon/.gemini/antigravity-cli/hooks/README.md) 참조.
|
||||
|
||||
## Format Discipline (always)
|
||||
|
||||
- One file = one §4 subsection. 파일 묶지 않음.
|
||||
- No "Pillar / Group / Theme" grouping in §4. 그룹화는 §2 매트릭스 위쪽이나 §5 에서만.
|
||||
- Every claim cites `<file:line>`. 단정적 사실 + `<file:line>` 근거 없으면 그 문장 삭제 또는 `INFERENCE` 라벨.
|
||||
- §5 priority table only references analyzed files.
|
||||
- No mermaid/diagram filler.
|
||||
- No bilingual mirroring.
|
||||
|
||||
## Pre-Send Format Check (essential 7)
|
||||
|
||||
송신 직전 다음 7개 확인. 하나라도 실패하면 draft 폐기. 전체 12 항목은 root rule §"Pre-Send Format Check" 참조.
|
||||
|
||||
1. 본문 산문 언어가 사용자 언어와 일치?
|
||||
2. §1~§7 모두 존재 (해당 없으면 명시적 `N/A`)?
|
||||
3. §2 evidence matrix 행 수 = in-scope 파일 수? 불일치 시 §3 reconciliation 블록 있는가?
|
||||
4. §4 하위섹션 수 = §2 의 `READ_FULL` + `READ_PARTIAL` 행 수?
|
||||
5. §4 각 finding 이 verbatim quote + `<file:line>` 을 Original goal / Current state 에 포함?
|
||||
6. §5 priority 표의 모든 파일이 §4 에 하위섹션 보유?
|
||||
7. file:line 경로가 워크스페이스 상대 (또는 §0 alias) 형식? 절대 경로 `/home/...` 금지?
|
||||
@@ -0,0 +1,165 @@
|
||||
# Per-File Findings + Adversarial Review Template
|
||||
|
||||
Root SSOT: [`rules/reporting-standards.md`](../../../../../rules/reporting-standards.md) §"4. 파일별 발견 사항" + §"4-1. 적대 리뷰 결과"
|
||||
parent: [`README.md`](README.md)
|
||||
|
||||
§0~§3, §3-1 Verdict, §5~§8 → [`report-template.md`](report-template.md)
|
||||
§7.1 self-grep 카운트 규칙 → [`verification-rules.md`](verification-rules.md)
|
||||
|
||||
## §4. 파일별 발견 사항 / Per-File Findings
|
||||
|
||||
> **분할 시:** §4 상세는 `<topic>-per-file-findings.md` 파일에 들어간다. master report 의 §4 는 한 줄 요약 + 링크만.
|
||||
|
||||
각 파일은 자기 하위섹션을 갖는다. "Pillar", "Group", "Theme" 등으로 묶지 않는다. 묶으면 누락 숨겨짐.
|
||||
|
||||
각 발견 사항은 **Goal → Problem → Action 인과 사슬** 형식. 단순 의견("성능이 떨어질 수 있다", "고려가 필요하다") 금지. 자세한 컨트랙트는 [`../advisory-depth/contracts-1-causal-chain.md`](../advisory-depth/contracts-1-causal-chain.md) Contract 1 참조.
|
||||
|
||||
### 한 파일에서의 finding 개수
|
||||
|
||||
각 파일에 대해 분석이 surfacing 한 **모든 gap 을 finding 으로 등재**. 1 파일 = 1 finding 이 아니라 발견된 모든 결함·누락·모호점 빠짐없이 풀어쓴다. 보통 명세 1개 = 2~5 findings.
|
||||
|
||||
### Single-finding Justification Gate
|
||||
|
||||
파일당 finding 이 정확히 1개라면 §4 하위섹션 끝에 **반드시** 정당화 블록 첨부. 정당화 없이 1개로 끝낸 파일은 자동 `BLOCKED`.
|
||||
|
||||
```markdown
|
||||
#### Single-finding justification (필수, finding이 1개일 때)
|
||||
|
||||
다음 4개 중 1개 이상 해당:
|
||||
|
||||
- [ ] **단순 명세:** 파일 총 라인 수 < 80, 또는 단일 정책 명세.
|
||||
증거: `<file>` 총 <N>줄, 결정 사항 1건.
|
||||
- [ ] **전수 통과 + 1개 결함:** 검토 <K>개 항목 중 (K−1)개 PASS, 1개 FAIL.
|
||||
검토 항목 리스트:
|
||||
1. <item 1> — PASS
|
||||
2. <item 2> — PASS
|
||||
3. <item 3> — FAIL (위 finding)
|
||||
- [ ] **부분 분석 (PARTIAL):** 시간·범위 제약. §6 Follow-Up 에 추가 분석 대상 명시.
|
||||
남은 대상: <list>
|
||||
- [ ] **단일 critical 차단:** finding 이 너무 critical 하여 다른 항목 분석에 앞서 처리되어야 함.
|
||||
이유: <근거>
|
||||
```
|
||||
|
||||
블록 없거나, 4개 중 어느 것도 체크 안 됐거나, "검토 항목" 비어 있으면 → 자동 `BLOCKED`. 정당화는 fluff 아닌 **사실 진술**.
|
||||
|
||||
### Zero-finding 파일 처리
|
||||
|
||||
진정 0-finding 인 `READ_FULL` 파일은 하위섹션을 생략하지 **않는다**. 명시:
|
||||
|
||||
```markdown
|
||||
**0-finding 정당화 (필수):**
|
||||
이 파일은 명세 의도와 현재 상태가 일치하며, 검토 <N>개 항목 모두 통과.
|
||||
|
||||
검토 항목:
|
||||
1. <item 1> — PASS — 근거: `<file:line>`
|
||||
2. <item 2> — PASS — 근거: `<file:line>`
|
||||
```
|
||||
|
||||
`<N>개 항목`은 추상적 아닌 실제 목록. "검토 모두 통과" 한 줄만 → 자동 `BLOCKED`.
|
||||
|
||||
### 4.1 `<filename>` (Status: READ_FULL | READ_PARTIAL)
|
||||
|
||||
- **요지 / Gist:** <한 문장으로 이 파일이 무엇을 정의하는가>
|
||||
- **문서 원래 목표:** <이 파일이 정의하려 한 핵심 의도>. 근거: `<file:line>`
|
||||
- **검토 항목:** <N개 항목 리스트>
|
||||
- **Findings 요약:** N개 (Critical X · High Y · Medium Z · 통과 W)
|
||||
|
||||
#### Finding 4.1.1: <짧은 라벨 — 이 finding 의 한 문장 정체성>
|
||||
|
||||
- **심각도:** Critical | High | Medium | Low
|
||||
- **원래 목표 / Original goal:**
|
||||
- **인용:** "<exact text from source, byte-for-byte>"
|
||||
- **위치:** `<path>:<line>` (워크스페이스 상대 경로만)
|
||||
- **해석:** <한 문장>
|
||||
- **현재 상태 / Current state:**
|
||||
- **인용:** "<exact text>" (또는 "해당 라인 없음 — 명세 자체에 누락")
|
||||
- **위치:** `<path>:<line>`
|
||||
- **실무 가정 / Real-world assumptions (REQUIRED — min 1, typical 2~3):**
|
||||
비판이 성립하려면 어떤 실무 가정이 참이어야 하는가? 명시하지 않으면 비판은 "에이전트가 상상한 구현" 표적.
|
||||
1. **가정 A:** <e.g., "구현이 동기식", "프로덕션 트래픽 > 1000 RPS", "K8s 환경">
|
||||
- **무효 조건:** <이 가정이 거짓일 시나리오>
|
||||
- **사용자 검증 방법:** <한 줄 체크>
|
||||
2. **가정 B:** ...
|
||||
- **간극 / Gap (위 가정들이 모두 참일 때):**
|
||||
- **구체적 실패 모드:** <X 상황에서 Y 발생 → Z 깨짐 — 1~3개>
|
||||
- **재현 조건:** <실패가 일어나는 트리거>
|
||||
- **이 finding 이 무효해지는 경우:** <어떤 가정이 거짓이면 비판 자체 사라지는가>
|
||||
- **필요 조치:** <구체 액션 — 추상 아닌 실행 가능 형태>
|
||||
- **조치 근거:** <왜 이 액션이 일반 대안보다 이 상황에 맞는가>
|
||||
- **대안 / Alternatives considered:** [`../advisory-depth/contracts-2-3-4-structure.md`](../advisory-depth/contracts-2-3-4-structure.md) Contract 2 — 가능한 모든 대안 열거 (3~5개)
|
||||
- **대안 A:** <라벨> — 적용 상황 / 부적합 이유
|
||||
- **대안 B:** ...
|
||||
- **대안 C (채택):** <라벨> — 왜 이 상황에 가장 맞는가
|
||||
- **반대 논거 / Counterarguments (REQUIRED — min 1, typical 2~3):**
|
||||
Contract 1 — 권고가 틀릴 수 있는 시나리오.
|
||||
1. **반대 A:** <권고가 부적절·과잉인 시나리오>
|
||||
- **반대 근거:** <왜 그 시나리오에서 부적절한가>
|
||||
- **검증 방법:** <한 줄 체크>
|
||||
- **구현 단계:** <순서 있는 단계>
|
||||
1. <단계 1 — 수정할 파일, 어디에 어떤 내용 들어가는지>
|
||||
2. <단계 2>
|
||||
- **검증 방법:**
|
||||
- **자동:** <self-grep / `wiki-link-verifier` / `/lint` / frontmatter grep / wikilink ls 등>
|
||||
- **수동:** <Obsidian 그래프뷰 / 리뷰 시 확인 포인트 — 자동 부족 시에만>
|
||||
- **관련:**
|
||||
- 다른 finding 과 결합: <같은 / 다른 파일 finding 과 함께 처리해야 효과>
|
||||
- 상호 의존 파일: <영향 주고받는 명세/모듈>
|
||||
|
||||
#### Finding 4.1.2: ...
|
||||
|
||||
### 4.2 `<next filename>` ...
|
||||
|
||||
`NOT_READ` 및 `BLOCKED` 파일은 본 섹션에 자기 하위섹션 X. 매트릭스와 §3 에만 등장.
|
||||
|
||||
### Master report 에서의 §4 (분할 시)
|
||||
|
||||
분할 시 master report 의 §4 는 한 줄 요약 표만:
|
||||
|
||||
```markdown
|
||||
## 4. 파일별 발견 사항 (요약)
|
||||
|
||||
> 상세: [<topic>-per-file-findings.md](./docs/superpowers/specs/<topic>-per-file-findings.md)
|
||||
|
||||
| # | File | Findings | Critical | High | Medium | Low | 통과 |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| 4.1 | `feature-X.md` | 3 | 1 | 2 | 0 | 0 | N/A |
|
||||
```
|
||||
|
||||
## §4-1. 적대 리뷰 결과 / Adversarial Review Results
|
||||
|
||||
§4 findings 5개 이상 시 `wiki-adversarial-reviewer` 디스패치 **권장**. 5개 미만이면 적대 리뷰 없이 송신 가능.
|
||||
|
||||
분할 시: 본 섹션은 **master report 에 들어간다**. per-file-findings 에는 들어가지 않는다.
|
||||
|
||||
### 4-1.1 적대 리뷰 실행 여부
|
||||
|
||||
| 항목 | 값 |
|
||||
| --- | --- |
|
||||
| 적대 리뷰 실행 | YES / NO |
|
||||
| 실행하지 않은 사유 (NO 시) | <e.g., findings < 5> |
|
||||
| 적대 리뷰 보고서 경로 | `docs/superpowers/specs/YYYY-MM-DD-<topic>-adversarial-review.md` |
|
||||
|
||||
### 4-1.2 적대 리뷰 요약 표 (실행 시)
|
||||
|
||||
| Finding ID | Original severity | Practicality | Overclaim | Assumption | Action |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 4.1.1 | Critical | PASS | FAIL | PASS | DOWNGRADE → High |
|
||||
|
||||
### 4-1.3 컨트롤러 판단 반영
|
||||
|
||||
- **수용 (Accept)**: 권고대로 강등 또는 제거 적용.
|
||||
- **거부 (Override)**: 거부 사유 1~2줄 명시 필수.
|
||||
|
||||
| Finding ID | 적대 권고 | 컨트롤러 결정 | 거부 사유 (Override 시) |
|
||||
| --- | --- | --- | --- |
|
||||
| 4.1.1 | DOWNGRADE → High | Accept | — |
|
||||
| 4.2.1 | REJECT | Override (KEEP at Medium) | 사용자 환경에서 실제 관측 사례 |
|
||||
|
||||
### 4-1.4 결과 메트릭
|
||||
|
||||
- KEEP: <n>
|
||||
- DOWNGRADE: <n>
|
||||
- REJECT: <n>
|
||||
- Override: <n>
|
||||
|
||||
§1 Executive Summary 와 §5 Priority Recommendations 는 적대 리뷰 결과 **반영 후** 상태. 강등된 finding 이 §5 에 여전히 Critical 이면 자동 `BLOCKED`.
|
||||
@@ -0,0 +1,89 @@
|
||||
# Output Split Policy
|
||||
|
||||
Root SSOT: [`rules/reporting-standards.md`](../../../../../rules/reporting-standards.md) §"Output Split Policy"
|
||||
parent: [`README.md`](README.md)
|
||||
|
||||
긴 보고서는 **파일에 분할 저장**, 터미널 dump 금지. 터미널은 네비게이션 레이어, 디스크는 깊이.
|
||||
|
||||
## When to split
|
||||
|
||||
다음 중 **하나라도 참** 이면 분할:
|
||||
|
||||
- in-scope 파일 수 > 3
|
||||
- §4 Per-File Findings 하위섹션 수 ≥ 5
|
||||
- 전체 §1~§7 응답 추정 ~10,000자 초과
|
||||
- 사용자가 "save" / "저장" / "파일로" / "report" / "보고서" 라고 말함
|
||||
|
||||
단일 파일 / 단순 lookup / 짧은 advisory 는 분할하지 않는다 — 전체 본문 터미널 유지.
|
||||
|
||||
## What to save
|
||||
|
||||
산출물 유형별 저장 경로 + CLAUDE.md §15 게이트:
|
||||
|
||||
| 산출물 유형 | 저장 경로 | 게이트 |
|
||||
|---|---|---|
|
||||
| Multi-doc audit / research report | `docs/superpowers/specs/YYYY-MM-DD-<topic>-report.md` (+ per-file-findings) | — |
|
||||
| 신규 raw 문서 | `raw/<category>/<slug>.md` | `wiki-doc-author` 또는 `wiki-source-summarizer` agent dispatch |
|
||||
| Canonical 추출 (raw → wiki) | `wiki/concepts/<slug>.md` 또는 `wiki/projects/<project>/<topic>.md` | **`/ingest` 게이트만 허용** — agent 가 직접 `wiki/interview/` · `wiki/portfolio/` · `wiki/blog/` 에 작성 금지 |
|
||||
| Derived (interview / portfolio / blog) | `wiki/interview/[<cat>/]<slug>.md`, `wiki/portfolio/<slug>.md`, `wiki/blog/<slug>-YYYY-MM-DD.md` | **원천 canonical status ∈ {reviewed, verified, published-ready}** 필수. 미달 시 BLOCKED |
|
||||
| Adversarial review report | `docs/superpowers/specs/YYYY-MM-DD-<topic>-adversarial-review.md` | findings ≥ 5 시 권장 |
|
||||
|
||||
메타 보고서의 경우 **두 파일**:
|
||||
|
||||
1. **`<topic>-report.md`** (master) — §1 Executive Summary + §2 Evidence Matrix + §3 Coverage + §4 (한 줄 요약 + 링크) + §5 Priority + §6 Follow-Up + §7 Verification + §8 Artifacts
|
||||
2. **`<topic>-per-file-findings.md`** — expanded §4 (`READ_FULL` / `READ_PARTIAL` 파일당 하위섹션, deep 템플릿)
|
||||
|
||||
Naming:
|
||||
- `YYYY-MM-DD` = 보고서 작성일
|
||||
- `<topic>` = 짧은 kebab-case slug. 예: `branch-notes-audit`, `link-integrity-audit`, `keycloak-canonical-extraction`
|
||||
- 동일 이름 존재 시 `-v2`, `-v3` 접미사. 명시적 사용자 지시 없는 덮어쓰기 금지.
|
||||
|
||||
## Pipeline Gate Enforcement (CLAUDE.md §15)
|
||||
|
||||
본 rule 은 다음을 hard rule 로 강제. 위반 시 draft `BLOCKED`:
|
||||
|
||||
1. **`wiki/interview/` · `wiki/portfolio/` · `wiki/blog/` 직접 작성 금지** — 즉시 `NEEDS_CONTEXT` 반환. `/projectize` · `/interviewize` · `/blogify` 또는 수동 작성 전용.
|
||||
2. **derived 문서 작성 전 원천 canonical status 검증 강제** — `reviewed | verified | published-ready` 미만이면 BLOCKED. 응답에 `원천 <path> status: <value>` 명시 + status grep 출력 첨부.
|
||||
3. **`/ingest` 목적지는 `wiki/concepts/` 와 `wiki/projects/` 만** — 다른 wiki 하위 디렉토리 ingest 금지.
|
||||
4. **canonical 문서 Sources 필수** — `wiki/concepts/` · `wiki/projects/` 작성 시 외부 자료 (`raw/official-docs/` · `raw/company-tech-blogs/`) wikilink 1개 이상 없으면 BLOCKED.
|
||||
|
||||
## What stays in the terminal
|
||||
|
||||
터미널은 **네비게이션 레이어만**:
|
||||
|
||||
```markdown
|
||||
# [작업명] 보고서 — 터미널 요약
|
||||
|
||||
**일자:** YYYY-MM-DD
|
||||
**범위:** <N개 파일>
|
||||
**Verdict:** COMPLETE | PARTIAL | BLOCKED
|
||||
**전체 보고서:** `docs/superpowers/specs/YYYY-MM-DD-<topic>-report.md`
|
||||
**파일별 상세:** `docs/superpowers/specs/YYYY-MM-DD-<topic>-per-file-findings.md`
|
||||
|
||||
## 1. 한눈 요약 (전체본)
|
||||
## 2. Evidence Matrix (전체본 — 행 수 많아도 매트릭스는 터미널 유지)
|
||||
## 5. 우선순위 권고 (전체본)
|
||||
## 6. 후속 작업 (전체본)
|
||||
## 7. 검증 (실행 명령 + 결과)
|
||||
```
|
||||
|
||||
터미널에서 생략: §3 Coverage 상세, §4 Per-File Findings 본문 (요약 한 줄만), §8 Artifacts (위 frontmatter 링크로 대체).
|
||||
|
||||
§4 본문을 터미널에 그대로 붙여넣어 출력을 부풀리지 않는다.
|
||||
|
||||
## Link format
|
||||
|
||||
저장 파일 경로는 워크스페이스 루트 기준 상대 경로. **절대 경로 금지**.
|
||||
|
||||
✓ `docs/superpowers/specs/2026-05-23-branch-notes-audit-report.md`
|
||||
✗ `/home/donghyeon/Documents/LLM Wiki/docs/...`
|
||||
|
||||
## Pre-send check (split-specific)
|
||||
|
||||
송신 직전 다음 확인. 하나라도 실패하면 draft 폐기:
|
||||
|
||||
1. 두 파일이 실제로 디스크에 쓰였는가? (Write 도구 실행 결과 확인)
|
||||
2. 터미널 본문에 두 파일의 상대 경로 링크 포함?
|
||||
3. 터미널 본문에 §4 Per-File Findings 상세 미포함? (요약 한 줄만 허용)
|
||||
4. 두 파일이 §1~§7 (master) / §4 expanded (per-file) 각자 자기 위치에서 완비?
|
||||
5. 두 파일 헤더 frontmatter (일자, 범위, Verdict) 서로 일치?
|
||||
@@ -0,0 +1,158 @@
|
||||
# Report Template (§0~§3, §3-1 Verdict, §5~§8)
|
||||
|
||||
Root SSOT: [`rules/reporting-standards.md`](../../../../../rules/reporting-standards.md) §"Report Template"
|
||||
parent: [`README.md`](README.md)
|
||||
|
||||
§4 Per-File Findings + §4-1 Adversarial Review → [`findings-template.md`](findings-template.md)
|
||||
§7 Verification (self-grep 카운트 규칙) → [`verification-rules.md`](verification-rules.md)
|
||||
|
||||
모든 covered 보고서는 본 섹션 순서를 따른다. 재정렬 / 병합 / 생략 금지. 빈 섹션은 `해당 없음 / N/A` 로 명시.
|
||||
|
||||
## Frontmatter
|
||||
|
||||
```markdown
|
||||
# [작업명] 보고서
|
||||
|
||||
**일자 / Date:** YYYY-MM-DD
|
||||
**범위 / Scope:** <N개 파일 또는 영역>
|
||||
**Verdict:** COMPLETE | PARTIAL | BLOCKED
|
||||
**요청 언어 / User language:** ko | en | mixed
|
||||
```
|
||||
|
||||
## §0. Source roots (외부 디렉토리 참조 시에만)
|
||||
|
||||
| Alias | 절대 경로 |
|
||||
| --- | --- |
|
||||
| `<raw-branches>` | `/home/donghyeon/Documents/LLM Wiki/raw/branch-notes` |
|
||||
| `<raw-projects>` | `/home/donghyeon/Documents/LLM Wiki/raw/project-notes` |
|
||||
| `<wiki-concepts>` | `/home/donghyeon/Documents/LLM Wiki/wiki/concepts` |
|
||||
| `<wiki-projects>` | `/home/donghyeon/Documents/LLM Wiki/wiki/projects` |
|
||||
| `<ca-tmpl>` | `/home/donghyeon/workspace/ca-tmpl` (코드 컨텍스트 참조 시) |
|
||||
|
||||
이후 인용 예: `<raw-branches>/feature-X.md:42`. 워크스페이스 안만 다루면 "해당 없음 / N/A".
|
||||
|
||||
## §1. 한눈 요약 / Executive Summary
|
||||
|
||||
3~6 문장. 무엇을 했는가 / 정독 파일 수 vs 전체 in-scope / 가장 중요한 발견 1~2 / 후속 조치 필요 항목 수.
|
||||
|
||||
## §2. Evidence Matrix
|
||||
|
||||
### Evidence Matrix Hard Format
|
||||
|
||||
Rows must be mechanically countable by the hook. Use exactly:
|
||||
|
||||
```text
|
||||
| Path | Status | Evidence | Extracted facts |
|
||||
| --- | --- | --- | --- |
|
||||
| raw/branch-notes/<file>.md | READ_FULL | lines x-y | <fact> |
|
||||
```
|
||||
|
||||
Do not use filename-only paths (`feature-x.md`), `Status=raw`, or `READ_FULL=Yes`. Allowed status values are exactly `READ_FULL`, `READ_PARTIAL`, `NOT_READ`, `BLOCKED`.
|
||||
|
||||
|
||||
모든 in-scope 파일에 정확히 한 행. 누락 금지.
|
||||
|
||||
| Path | Status | Evidence | Extracted facts |
|
||||
| --- | --- | --- | --- |
|
||||
| <path> | READ_FULL | <line range> | <facts in user language> |
|
||||
| <path> | NOT_READ | <reason> | UNVERIFIED |
|
||||
|
||||
allowed Status: `READ_FULL`, `READ_PARTIAL`, `NOT_READ`, `BLOCKED`.
|
||||
|
||||
## §3. 커버리지 정합성 / Coverage Reconciliation
|
||||
|
||||
본 섹션은 자기 신고 아닌 **산식 영역**.
|
||||
|
||||
| 항목 | 값 |
|
||||
| --- | --- |
|
||||
| (a) in-scope 파일 수 | <N> |
|
||||
| (b) §2 evidence matrix 총 행 수 | <M> |
|
||||
| (c) §2 의 `READ_FULL` + `READ_PARTIAL` 행 수 | <R> |
|
||||
| (d) §4 deep-template 충족 하위섹션 수 | <P> |
|
||||
| (e) (a − b) — 매트릭스 누락 | <a-b> |
|
||||
| (f) **(c − d) — 분석 깊이 미달** | **<c-d>** |
|
||||
|
||||
### 분석 깊이 미달 파일 명세
|
||||
|
||||
`(c − d) > 0` 이면 누락 파일 빠짐없이 나열. "없음" 적었으나 누락 있으면 자동 `BLOCKED`.
|
||||
|
||||
| 파일 경로 | §2 Status | §4 분석 여부 | 누락 사유 |
|
||||
| --- | --- | --- | --- |
|
||||
|
||||
(비어 있으면 명시: "분석 깊이 미달 없음 — (c − d) = 0".)
|
||||
|
||||
### `NOT_READ` / `BLOCKED` 파일
|
||||
|
||||
- `NOT_READ` 목록: <list 또는 "없음">
|
||||
- `BLOCKED` 목록 (사유): <list 또는 "없음">
|
||||
|
||||
### 정직성 컨트랙트
|
||||
|
||||
- 모든 사실 주장은 §2 매트릭스의 `READ_FULL` / `READ_PARTIAL` 행에서 나옴
|
||||
- §4 미다룸 파일은 §5 등장 불가
|
||||
- 매트릭스 vs §4 행 수 불일치 시 §5 에 §4 없는 파일 올리면 자동 `BLOCKED`
|
||||
|
||||
## §3-1. Verdict 결정 알고리즘 / Verdict Calculation
|
||||
|
||||
**산식이 라벨을 결정**. agent 가 자기 의지로 라벨링 X. 산식과 라벨 불일치 시 송신 불가.
|
||||
|
||||
```text
|
||||
Let:
|
||||
N = in-scope 파일 수
|
||||
M = §2 evidence matrix 총 행 수
|
||||
R = §2 의 READ_FULL + READ_PARTIAL 행 수
|
||||
P = §4 deep-template 충족 하위섹션 수
|
||||
G = self-grep 검증 (verification-rules.md) 통과 finding 수
|
||||
T = 전체 finding 수
|
||||
|
||||
Verdict =
|
||||
COMPLETE iff (M == N) AND (P == R) AND (G == T) AND (모든 §5 권고가 §4 파일을 가리킴)
|
||||
PARTIAL iff (M == N) AND ((P < R) OR (G < T))
|
||||
BLOCKED iff (M < N) OR (enumeration 불가) OR (필수 first reads 차단)
|
||||
```
|
||||
|
||||
`COMPLETE` 적으려면 4개 조건 **전부 참**. 하나라도 거짓 → 자동 `PARTIAL` 또는 `BLOCKED`.
|
||||
|
||||
Pre-send 시 §3 (a)~(f) 값을 실제 계산 → 산식 평가 → Verdict 라벨 채움. 산식 위반은 정직성 실패, draft 폐기.
|
||||
|
||||
## §4 + §4-1
|
||||
|
||||
→ [`findings-template.md`](findings-template.md) 별도 sub-file. Per-File Findings deep template + Single-finding gate + Zero-finding handling + Adversarial Review.
|
||||
|
||||
## §5. 우선순위 권고 / Priority Recommendations
|
||||
|
||||
| 우선순위 | 권고 액션 | 근거 파일:라인 | 원래 목표 | 현재 간극 | 조치 후 효과 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 1 (Critical) | ... | `<file:line>` | ... | ... | ... |
|
||||
| 2 (High) | ... | `<file:line>` | ... | ... | ... |
|
||||
|
||||
각 행은 §4 의 한 Finding 과 **1:1 대응**. 단순화 / 축약 / 일반화 금지. 본 표 모든 파일은 §4 에 자기 하위섹션 보유 필수. §4 에 없는 파일을 본 표에 올리면 자동 `BLOCKED`.
|
||||
|
||||
## §6. 후속 작업 / Follow-Up
|
||||
|
||||
- 다음 라운드 정독 대상 파일
|
||||
- 미해결 위험
|
||||
- 추가 검증 필요한 가설
|
||||
- Out of scope: <slice 가 다루지 못한 인접 영역>
|
||||
|
||||
## §7. 검증 / Verification
|
||||
|
||||
→ [`verification-rules.md`](verification-rules.md) — §7.1 self-grep proof + §7.2 실행 명령 + 카운트 규칙.
|
||||
|
||||
## §8. Generated Artifacts (분할 시에만)
|
||||
|
||||
- 전체 보고서: `docs/superpowers/specs/YYYY-MM-DD-<topic>-report.md`
|
||||
- 파일별 상세: `docs/superpowers/specs/YYYY-MM-DD-<topic>-per-file-findings.md`
|
||||
- 작성 일자: YYYY-MM-DD
|
||||
- 작성 도구: Antigravity CLI / wiki-superpowers plugin
|
||||
|
||||
## Anti-Patterns to Avoid
|
||||
|
||||
| Pattern | Why fails | Replacement |
|
||||
| --- | --- | --- |
|
||||
| "Pillar A: 4 files" 묶음 비평 | 4개 중 어느 파일 어디서 나온 사실인지 추적 불가 | 파일당 §4 하위섹션 1개 |
|
||||
| GitHub `[!WARNING]` admonition만 | 출처 사라짐. 인용 라인 없음 | `<file:line>` 인용 + 한 줄 발췌 |
|
||||
| 영어 보고서 + 한국어 대화 | 사용자가 번역 강요됨 | 사용자 언어로 통일 |
|
||||
| Executive summary 없이 본론 | 핵심을 끝까지 읽어야 알 수 있음 | §1 3~6 문장 |
|
||||
| 우선순위 표에 정독 안 한 파일 | 추측을 권고로 둔갑 | §4 에 있는 파일만 §5 |
|
||||
| Verdict 없이 발견만 나열 | 통과/실패 판단 불가 | 상단 frontmatter Verdict 명시 |
|
||||
@@ -0,0 +1,116 @@
|
||||
# §7 Verification Rules
|
||||
|
||||
Root SSOT: [`rules/reporting-standards.md`](../../../../../rules/reporting-standards.md) §"7. 검증 / Verification"
|
||||
parent: [`README.md`](README.md)
|
||||
관련: [`../advisory-depth/contracts-5-6-citation-grep.md`](../advisory-depth/contracts-5-6-citation-grep.md) Contract 6 Self-Grep Verification
|
||||
|
||||
## §7.1 Self-grep proof (MANDATORY when §4 contains verbatim quotes)
|
||||
|
||||
송신 전에 실행한 grep/sed 명령과 관측 결과를 기록한다. **이것이 인용을 검증했다는 유일한 증거**.
|
||||
|
||||
### 카운트 규칙 (엄격)
|
||||
|
||||
`V`, `P`, `C`, `D`, `G` 값은 **§7.1 에 sed/grep 명령이 실제로 적힌 quote 만** 카운트. 명령이 없는 quote 는 자동 `미검증 (UNVERIFIED)`. 통계 일반화 금지.
|
||||
|
||||
- `V` = §7.1 에 sed/grep 명령이 적힌 quote 수 (= 명령 블록 행 수)
|
||||
- `P` = 그중 출력이 quote 와 일치한 수
|
||||
- `C` = 그중 라인 정정이 필요했던 수
|
||||
- `D` = 그중 폐기된 finding 수
|
||||
- `G` = `P` ([`report-template.md`](report-template.md) §3-1 Verdict 산식 입력)
|
||||
- `U` = 미검증 quote 수 = (§4 전체 quote 수) − `V`
|
||||
|
||||
§4 에 quote N개 있고 §7.1 에 sed 명령 K개 적었다면 `V = K`, `U = N − K`. **"통과 N" 이라 적으면 자동 `BLOCKED`** — `K` 외 quote 는 미검증이지 통과 아님.
|
||||
|
||||
```bash
|
||||
# 검증한 모든 sed/grep 명령을 인라인으로 나열한다.
|
||||
sed -n '<line>p' '<absolute path>'
|
||||
# Observed: <actual output>
|
||||
|
||||
sed -n '<line>p' '<absolute path>'
|
||||
# Observed: <actual output>
|
||||
|
||||
grep -nF -- '<verbatim quote>' '<absolute path>'
|
||||
# Observed: <line>:<actual output>
|
||||
```
|
||||
|
||||
### Sampling 권장량
|
||||
|
||||
V 가 N 보다 작아도 괜찮다. 다만 V 가 작을수록 보고서 신뢰도 낮음. §1 Executive Summary 와 §3-1 Verdict 결정에 반영.
|
||||
|
||||
- **V == N** (전부 검증) → `G = P`, Verdict 산식 그대로 반영
|
||||
- **V ≥ max(10, N×0.3)** (최소 10개 또는 30% 중 큰 값) → §1 에 "표본 검증" 명시, Verdict 자동 `PARTIAL` 강등
|
||||
- **V < max(10, N×0.3)** → Verdict `BLOCKED` (검증 표본 너무 작아 신뢰 불가)
|
||||
|
||||
### 통계 정직성 블록 (필수 출력)
|
||||
|
||||
§7.1 끝에 다음을 항상 적는다:
|
||||
|
||||
- 검증한 verbatim quote 총 개수 `V`: <실제 §7.1 에 명령이 적힌 수>
|
||||
- 일치 (통과) `P`: <그중 출력 일치한 수>
|
||||
- 불일치로 finding 폐기 `D`: <그중 폐기된 수>
|
||||
- 라인 정정 `C`: <그중 라인 정정한 수>
|
||||
- §3-1 Verdict 산식의 `G` 값 (= P): <G>
|
||||
- **미검증 quote 수 `U` (= §4 전체 quote 수 − V)**: <U>
|
||||
- §4 전체 quote 수 `N`: <N>
|
||||
- 검증 비율 `V/N`: <백분율>
|
||||
|
||||
`V = N` 아니면 §1 Executive Summary 에 `"표본 검증: V/N quote 검증 완료, 미검증 U개는 사용자가 직접 grep 확인 권장"` 명시. **"전수 검증" 같은 표현 금지**.
|
||||
|
||||
### 통계 fabrication 차단
|
||||
|
||||
다음은 모두 정직성 위반으로 자동 `BLOCKED`:
|
||||
|
||||
- §7.1 에 sed/grep 명령 0건인데 `V > 0` 또는 `검증률 100%` 주장
|
||||
- "검증 비율 100%" 또는 "전수 검증" 표현 사용 (Contract 7 금지어 + 절대성 주장)
|
||||
- §4 에 quote 10개인데 §7.1 에 명령 3개만 적고 "통과 10" 으로 적힘
|
||||
- §7.1 의 sed 출력이 실제 source 파일 본문과 byte-for-byte 일치 안 함 (해당 finding 폐기 필수)
|
||||
- §7.1 의 grep 결과 line number 가 §4 finding 의 인용 위치와 다름 (라인 정정 필수)
|
||||
|
||||
## §7.2 실행한 검증 명령
|
||||
|
||||
본 섹션은 wiki 작업에 적용되는 자동 검증 명령을 기록. **코드 빌드 명령 (Gradle / npm 등) 금지** — 그건 ca-tmpl 영역. wiki 보고서에 빌드 명령 등장 시 자동 `BLOCKED`.
|
||||
|
||||
- 실행한 명령:
|
||||
- `<command>` → <결과>
|
||||
|
||||
대표적인 wiki 검증 명령:
|
||||
|
||||
```bash
|
||||
# Frontmatter 필수 필드 카운트
|
||||
grep -cE '^(title|source_type|status|tags|created):' '<file>'
|
||||
|
||||
# Parent 섹션 확인
|
||||
grep -c '^## Parent' '<file>'
|
||||
|
||||
# 본문 wikilink 추출 후 존재 확인
|
||||
grep -oE '\[\[[^]]+\]\]' '<file>' | sort -u
|
||||
ls 'raw/...' 'wiki/...'
|
||||
|
||||
# Tag taxonomy 위반 검사
|
||||
grep -h '^tags:' raw/**/*.md wiki/**/*.md | grep -oE '\[.*\]' | tr ',' '\n' | sort -u
|
||||
```
|
||||
|
||||
- 실행하지 못한 명령과 이유:
|
||||
- <command> — <reason>
|
||||
- 본 응답에서 새로 작성된 wiki 파일 수: <N> / 수정된 파일 수: <M>
|
||||
|
||||
## Hook enforcement 메모 (Antigravity-specific)
|
||||
|
||||
본 워크스페이스의 PreToolUse hook (`~/.gemini/antigravity-cli/hooks/wiki_hard_gate.py`) 의 G1 check 가 §7.1 형식을 검사:
|
||||
|
||||
- 응답에 `V/N` 비율 또는 "self-grep proof" 문구가 있는데
|
||||
- §7.1 에 `$ sed -n` 또는 `$ grep -nF` 명령 라인이 0개
|
||||
|
||||
→ hook `decision: deny` 반환.
|
||||
|
||||
**단 hook 은 형식만 검사**한다. sed/grep 의 실제 실행 진실성은 검증 못 한다. agent 가 위조 출력을 적어도 hook 통과. 진실성은 agent 자체 책임 — [`../advisory-depth/contracts-5-6-citation-grep.md`](../advisory-depth/contracts-5-6-citation-grep.md) Contract 6 참조.
|
||||
|
||||
|
||||
## Hard Gate Addendum — Real Output Only
|
||||
|
||||
The hook rejects reconstructed verification. In particular:
|
||||
|
||||
- Plain `sed -n '74,78p' file` output must not be shown with `74:` line prefixes. Use `grep -nF` or `nl -ba file | sed -n` if line numbers are required.
|
||||
- `sed-proofs.md` must not claim `100%`, `전수 검증`, or `fully verified` unless every finding has a command row and the command output is pasted.
|
||||
- Controller verification must count actual command rows, not prose claims.
|
||||
- A finding whose quote proves a different topic is `EVIDENCE_FINDING_MISMATCH` and cannot be counted as verified.
|
||||
Reference in New Issue
Block a user