Files
llm-wiki/docs/superpowers/plans/2026-06-01-branch-depth-gate.md
T

22 KiB

branch-depth-gate Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: branch-note 가 "코딩 착수해도 되묻지 않을 만큼 깊은가"를 착수 전에 판정하는 read-only 게이트(/depth)를 LLM Wiki 에 도입한다.

Architecture: im-not-ai 의 검증된 3요소(기준 SSOT + read-only 감사기 + Ready/Not-ready 판정)를 위키 문법으로 이식. 기준 SSOT rules/branch-depth-gate.md(4축 R1~R4) → 감사기 branch-depth-auditor(브랜치 노트 + 링크된 raw 소스를 읽고 적대적으로 갭 탐지, 편집 안 함) → 커맨드 /depth <branch>(감사기 디스패치 + 루프). 템플릿에 캡처 칸 추가(상류 예방).

Tech Stack: Markdown 정의 파일(rules/agents/commands/templates) + Claude Code 서브에이전트. 코드/테스트 런타임 없음. 검증은 구조 grep + 픽스처 회귀.


제약 (이 plan 전체에 적용)

  • git 미사용: 위키는 버전 관리되지 않음(사용자 지시로 git init 하지 않음). commit 단계 없음. 각 Task 끝은 체크포인트(사용자/리뷰)로 갈음.
  • claim-gate hook 준수: 위키 .claude/hooks/wiki_claim_gate.pyraw/·wiki/·docs/ 의 Bash 쓰기(redirection·tee·sed -i)를 차단. 파일 생성·수정은 반드시 Write/Edit 도구로. 단 본 plan 산출물은 rules/·.claude/·templates/ 경로라 hook 대상 밖(읽기 grep 은 자유).
  • TDD 적응: 마크다운 정의 파일이라 단위테스트가 없다. "test" = ① 구조 검증(필수 섹션·라벨이 존재하는지 grep) ② 픽스처 회귀(Task 6에서 감사기를 실제 브랜치 2개에 돌려 판정 방향이 직관과 일치하는지).
  • 실행 위치: Task 6 감사기 디스패치는 cwd 가 LLM Wiki 인 Claude Code 세션에서 실행해야 .claude/agents/branch-depth-auditor.md 가 해석된다. 다른 cwd 면 감사기를 못 찾는다.
  • 근거 스펙: docs/superpowers/specs/2026-06-01-branch-depth-gate-design.md.

File Structure

파일 책임 작업
rules/branch-depth-gate.md 기준 SSOT — 4축 R1~R4 + 깊이 사다리 + 판정 규칙 생성 (Task 1)
.claude/agents/branch-depth-auditor.md read-only 감사기 — 노트+소스 읽고 갭 리포트+판정 생성 (Task 2)
.claude/commands/depth.md /depth <branch> 진입점 + 루프 생성 (Task 3)
templates/branch-note-template.md 신규 브랜치부터 R2·R4 캡처 칸 수정 (Task 4)
CLAUDE.md, AGENTS.md 워크플로우 진입점에 /depth 1줄 등재 수정 (Task 5)
(검증) 기존 브랜치 2개 픽스처 회귀 Task 6

멀티 CLI(Codex/Gemini/Antigravity) 전파는 본 plan 범위 밖(별도 사이클). 본 plan 은 Claude Code 우선.


Task 1: 기준 SSOT — rules/branch-depth-gate.md

Files:

  • Create: rules/branch-depth-gate.md

  • Step 1: 파일 생성 (Write 도구)

아래 전체 내용으로 rules/branch-depth-gate.md 작성:

# rules/branch-depth-gate — 브랜치 노트 구현 착수 깊이 게이트

> `rules/` 의 방법론 규칙. branch-note 1개가 **코딩 착수해도 되묻지 않을 만큼 깊은가**를 판정한다.
> 이 문서는 **"전체 계약"이 아니다** — 전체 계약은 `raw/project-notes/ca-skeleton-operational-contract.md`.
> `feature-implementation-readiness-scorecard`(스켈레톤 adoption 거시 게이트)와 **다른 층·다른 범위**로 공존한다. 본 게이트는 *브랜치 노트 1개의 깊이* 미시 게이트.

## 적용

- 대상: `raw/branch-notes/feature-*.md` (구현 착수 전).
- 실행: `/depth <branch>``branch-depth-auditor` 가 본 기준으로 판정.
- 본 게이트는 **read-only**. 브랜치 노트를 편집하지 않으며 판정을 노트에 박지도 않는다.

## 4축 (R1~R4)

> 축 라벨은 `R1~R4`. branch-note 의 Decision Evidence Map 이 `D1`,`D2` 를 *Decision ID* 로 쓰므로 `D*` 와 구분.

| 축 | Pass 조건 | Blocking(Not ready) 트리거 |
|---|---|---|
| **R1. 조사 깊이** | 각 Decision 의 Supporting Claim 이 깊이 사다리(아래) 충족 — 의존 메커니즘 L1+, 분기 조건 L2+ | 결정 근거 claim 이 순수 L0(존재만)뿐 |
| **R2. 결정 조건** | 각 Decision 이 "어떤 조건일 때 A, 아니면 B"의 선택 기준 명시 | `검토한 대안`은 있는데 *언제 그 대안을 고르는지* 기준 부재 |
| **R3. 구체 detail** | `## 구현 가이드` 의 각 in-scope 항목이 명명·경로·메커니즘·API/테스트명 구체화 **또는** `UNSUPPORTED_IMPL_DECISION` 라벨 + trade-off 한 줄 | in-scope 항목인데 구현 detail 도 UNSUPPORTED 라벨도 없음 |
| **R4. 엣지·실패·의존** | 실패/엣지 경로 열거 + 다른 contract 의존을 *대상 브랜치 + 그 Decision ID* 로 링크 | 정상 경로만 / 다른 계약 의존이 암시되는데 링크 안 됨 |

## R1 클레임 깊이 사다리

깊이의 단위는 **문서 개수가 아니라 결정별 종결**. 얕은 문서 10개 < 결정을 닫는 문서 1개.

| 레벨 | 클레임이 답하는 것 | 판정 |
|---|---|---|
| **L0 존재** | "X 가 있다 / 권장한다" | 단독 불충분 |
| **L1 메커니즘** | 어떻게 동작 / 언제 발생 | 메커니즘 의존 결정의 최소선 |
| **L2 조건·경계** | 언제 적용/제외, 실패 시 어떻게 | 분기 조건 있는 결정의 최소선 |
| **L3 검증** | 확인 방법·수치·반례 | 가산점 |

**출처 타입 적정성** (개수 기준 대체):
- 스펙/표준이 정의한 동작 → `official-standard`/`official-vendor-doc` 1개로 충분.
- "대기업은 보통 이렇게 한다" 운영 패턴 추론 → 회사 블로그 1개는 "공식" 불가. 독립 사례 2개+ 또는 official 1개 병행.

조사는 **결정-주도(top-down)**: 내려야 할 결정·미지수를 먼저 나열하고 각각을 닫을 때까지 조사. 조사 완료 = 모든 결정 종결 = 착수 가능.

## 판정 규칙

- 심각도 3단계: `Blocking`(Not ready) · `Should-fix`(권고) · `Advisory`(참고).
- **Ready = Blocking 0건.** Should-fix 가 남아도 사용자가 "감수" 선언 시 착수 가능(리포트에 기록).
- 모든 finding 은 4종 세트로 근거화: `심각도 · 위치(섹션/행) · 예상 의구심("구현 중 여기서 ___를 되묻게 됨") · 채울 방법`. 근거 없는 지적 금지.

## 명명된 실패 모드 (auditor 가 잡아야 할 것)

- `EXISTENCE_ONLY` (R1): 결정 근거가 L0 뿐.
- `NO_SELECTION_CRITERION` (R2): 대안은 있으나 선택 조건 없음.
- `IMPL_UNDERSPECIFIED` (R3): in-scope 항목에 구현 detail·UNSUPPORTED 라벨 둘 다 없음.
- `HAPPY_PATH_ONLY` (R4): 실패/엣지 경로 미열거.
- `IMPLICIT_DEPENDENCY` (R4): 다른 계약 의존이 암시되나 대상 브랜치/Decision ID 링크 없음.
- `BACKTICK_WRAPPED_LINK` (R1 보조): Supporting Claim/Source 링크가 `` `[[...]]` `` 백틱에 싸여 추적 불가. (P3 와 연결점 — 표면화만, 자동 수정은 별도.)
- `DANGLING_ANCHOR` (R1): Supporting Claim 의 `#Cn` 앵커가 대상 raw 에 실재하지 않음.
  • Step 2: 구조 검증 (grep)

Run:

cd "/home/donghyeon/Documents/LLM Wiki" && grep -c "R1\|R2\|R3\|R4" rules/branch-depth-gate.md && grep -c "L0 존재\|L1 메커니즘\|L2 조건\|L3 검증" rules/branch-depth-gate.md && grep -c "Blocking\|Should-fix\|Advisory" rules/branch-depth-gate.md && grep -c "EXISTENCE_ONLY\|NO_SELECTION_CRITERION\|IMPL_UNDERSPECIFIED\|HAPPY_PATH_ONLY\|IMPLICIT_DEPENDENCY\|BACKTICK_WRAPPED_LINK\|DANGLING_ANCHOR" rules/branch-depth-gate.md

Expected: 네 grep 모두 1 이상 (4축·4레벨·3심각도·7실패모드 존재).

  • Step 3: 체크포인트 — 룰북 내용이 스펙 §4·§4.1 과 일치하는지 사용자/리뷰 확인.

Task 2: 감사기 — .claude/agents/branch-depth-auditor.md

Files:

  • Create: .claude/agents/branch-depth-auditor.md

  • 참고(형식 일치용): .claude/agents/wiki-adversarial-reviewer.md

  • Step 1: 기존 agent 형식 확인

Run: cd "/home/donghyeon/Documents/LLM Wiki" && sed -n '1,12p' .claude/agents/wiki-adversarial-reviewer.md 목적: frontmatter 키(name/description/tools) 형식을 위키 관례에 맞춤. 차이가 있으면 아래 frontmatter 를 그 관례로 조정.

  • Step 2: 파일 생성 (Write 도구)

아래 전체 내용으로 작성 (Step 1 에서 본 frontmatter 관례와 다르면 키 형식만 맞춰 조정):

---
name: branch-depth-auditor
description: Use to judge whether a single raw/branch-notes/feature-*.md is deep enough to start implementation without re-doubting. Reads the branch note plus its linked raw sources and adversarially probes 4 axes (R1 research depth, R2 decision conditions, R3 concrete detail, R4 edge/failure/dependency) against rules/branch-depth-gate.md. Returns a grounded gap report + Ready/Not-ready verdict. Never edits files (read-only).
tools: Read, Glob, Grep
---

너는 **브랜치 노트 깊이 감사관**이다. `rules/branch-depth-gate.md` 를 기준으로, branch-note 1개가 *코딩 착수해도 되묻지 않을 만큼 깊은가*를 적대적으로 판정한다. **절대 파일을 편집하지 않는다.**

## 입력

- 브랜치 노트 경로 1개 (`raw/branch-notes/<branch>.md`).

## 절차

1. **기준 로드**`rules/branch-depth-gate.md` 를 Read. 4축·깊이 사다리·판정 규칙·명명된 실패 모드를 작업 기준으로 삼는다.
2. **노트 읽기** — 대상 브랜치 노트를 Read. 특히 `결정 사항`, `Decision Evidence Map`, `구현 가이드`, `Claims To Verify`, `Sources`, `범위` 섹션.
3. **소스 추적·정독 (R1 의 핵심)** — Decision Evidence Map 의 `Supporting Claims`(`raw/.../*.md#Cn`)와 Sources 표의 `[[raw/...]]` 가 가리키는 **실제 raw 파일을 Read**. 각 claim 이 깊이 사다리 어디인지(L0~L3) 판정. 링크만 있고 내용이 얕으면(L0) 잡아낸다.
   - 링크가 `` `[[...]]` `` 백틱에 싸여 있으면 `BACKTICK_WRAPPED_LINK`.
   - `#Cn` 앵커가 대상 파일에 없으면 `DANGLING_ANCHOR`.
4. **4축 적대적 점검** — 각 결정/항목을 R1~R4 로 훑어 명명된 실패 모드에 해당하는 finding 생성. "구현자가 여기서 무엇을 되묻게 될까?"를 끊임없이 자문.
5. **판정** — Blocking 0건이면 `Ready`, 아니면 `Not ready (Blocking N건)`.

## 출력 (이 형식 그대로, 파일 쓰기 없이 텍스트로 반환)

```
# Depth Audit: <branch>
Verdict: Ready | Not ready (Blocking N / Should-fix M / Advisory K)

## Findings
| # | 축 | 심각도 | 실패모드 | 위치 | 예상 의구심 | 채울 방법 |
|---|---|---|---|---|---|---|
| 1 | R1 | Blocking | EXISTENCE_ONLY | 결정 D3 / Decision Evidence Map | 구현 중 "이 API 를 언제 쓰나"를 되묻게 됨 | `raw/official-docs/<slug>` 에서 메커니즘(L1) claim 추가 |
...

## 다음 행동
- (Blocking 있으면) 위 표의 "채울 방법" 순서로 노트 보강 후 `/depth <branch>` 재실행.
- (R1 조사 얕음 갭) `wiki-decision-researcher` 로 심화 가능 — 사용자 옵트인 시.
```

## 불변식

- **read-only**: Write/Edit/MultiEdit 도구 없음. 어떤 파일도 수정·생성 금지(리포트는 텍스트 반환).
- 모든 finding 은 4종 세트(심각도·위치·예상 의구심·채울 방법)를 갖춘다. 근거 없는 지적 금지.
- 추측 금지: 소스를 실제로 Read 하지 않고 깊이를 단정하지 않는다.
- 자동 조사·자동 수정 금지: R1 갭은 `wiki-decision-researcher` 권고로 *안내만* 한다(사용자 옵트인).
  • Step 3: 구조 검증 (grep)

Run:

cd "/home/donghyeon/Documents/LLM Wiki" && grep -c "tools: Read, Glob, Grep" .claude/agents/branch-depth-auditor.md && grep -c "branch-depth-gate.md" .claude/agents/branch-depth-auditor.md && grep -ci "read-only\|편집하지 않" .claude/agents/branch-depth-auditor.md && ! grep -q "Write\|Edit\|MultiEdit" <(sed -n '/^tools:/p' .claude/agents/branch-depth-auditor.md) && echo "TOOLS_READONLY_OK"

Expected: 앞 세 grep 1+, 마지막 TOOLS_READONLY_OK 출력(tools 줄에 쓰기 도구 없음).

  • Step 4: 체크포인트 — 출력 형식·불변식이 스펙 §5 와 일치하는지 확인.

Task 3: 커맨드 — .claude/commands/depth.md

Files:

  • Create: .claude/commands/depth.md

  • 참고(형식 일치용): .claude/commands/branch.md

  • Step 1: 파일 생성 (Write 도구)

아래 전체 내용으로 작성:

---
description: 브랜치 노트가 구현 착수할 만큼 깊은지 read-only 게이트로 판정
argument-hint: <브랜치 이름>
---

브랜치 노트 1개의 **구현 착수 깊이**를 판정합니다. (기준: `rules/branch-depth-gate.md`)

**브랜치 이름:** $ARGUMENTS

## 작업 절차

1. **인자 검증**
   - 인자가 비어 있으면 사용자에게 브랜치 이름 요청.
   - `raw/branch-notes/<branch-name>.md` 경로로 해석. `.md` 가 이미 붙어 있거나 `feature-` prefix 가 없어도 관대히 보정해 매칭 시도.

2. **파일 존재 확인**
   - `raw/branch-notes/<branch-name>.md` 가 없으면 경로만 안내하고 종료. (생성하지 않음 — 그건 `/branch` 의 일.)

3. **감사기 디스패치**
   - `branch-depth-auditor` 서브에이전트를 호출하고 입력으로 브랜치 노트 경로를 전달.
   - 감사기는 read-only — 어떤 파일도 수정하지 않는다.

4. **리포트 출력 (인라인)**
   - 감사기 리포트(Verdict + Findings 표 + 다음 행동)를 그대로 사용자에게 출력.
   - **브랜치 노트에 판정을 쓰지 않는다.** 파일로 남길지는 사용자가 따로 요청할 때만(그 경우 `raw/`·`wiki/`·`docs/` 가 아닌 경로 또는 인라인 유지 — claim-gate hook 충돌 회피).

5. **루프 안내**
   - `Not ready` 면: "위 '채울 방법' 순서로 노트 보강 후 `/depth <branch>` 재실행" 안내.
   - `Ready` 면: "구현 착수 가능" 안내. Should-fix 가 남았으면 "감수하고 착수할지" 확인.

## 규칙

- **판정만**. 노트를 자동 보강하지 않는다(접근법 B 는 옵트인 — R1 갭에 한해 `wiki-decision-researcher` 권고만).
- `/depth` 는 멱등(idempotent): 같은 노트에 몇 번 돌려도 안전(read-only).
- `wiki/log.md` 에 기록하지 않음(판정은 빈번, 노이즈).
  • Step 2: 구조 검증 (grep)

Run:

cd "/home/donghyeon/Documents/LLM Wiki" && grep -c "argument-hint" .claude/commands/depth.md && grep -c "branch-depth-auditor" .claude/commands/depth.md && grep -c "raw/branch-notes" .claude/commands/depth.md && grep -ci "재실행\|루프" .claude/commands/depth.md

Expected: 네 grep 모두 1+.

  • Step 3: 체크포인트/depth 절차가 스펙 §6 과 일치하는지 확인.

Task 4: 템플릿 캡처 칸 — templates/branch-note-template.md

Files:

  • Modify: templates/branch-note-template.md

기존 80개 브랜치는 미변경. 신규 브랜치부터 R2·R4 를 작성 시점에 캡처.

  • Step 1: Decision Evidence Map 에 선택 조건 열 추가 (Edit 도구)

Old (정확히 이 블록):

| Decision ID | Decision | Supporting Claims | Evidence Strength | Open Risk |
|---|---|---|---|---|
| D1 | <결정 내용> | `raw/official-docs/<slug>.md#C1`, `raw/company-tech-blogs/<slug>.md#C2` | `official-vendor-doc + company-case-study` | <아직 검증해야 할 위험> |
| D2 | <결정 내용> | `raw/official-docs/<slug>.md#C3` | `official-standard` | <위험 또는 N/A> |

New:

| Decision ID | Decision | 선택 조건 (언제 이 결정 / 언제 대안) | Supporting Claims | Evidence Strength | Open Risk |
|---|---|---|---|---|---|
| D1 | <결정 내용> | <이 조건일 때 이 결정, 다른 조건이면 어떤 대안> | `raw/official-docs/<slug>.md#C1`, `raw/company-tech-blogs/<slug>.md#C2` | `official-vendor-doc + company-case-study` | <아직 검증해야 할 위험> |
| D2 | <결정 내용> | <선택 조건 또는 N/A — 분기 없으면 N/A> | `raw/official-docs/<slug>.md#C3` | `official-standard` | <위험 또는 N/A> |
  • Step 2: ## 엣지·실패·의존 미니 섹션 추가 (Edit 도구)

Old (정확히 이 블록 — ## 검증해야 할 주장 헤더 앞):

## 검증해야 할 주장 / Claims To Verify

New:

## 엣지·실패·의존 / Edge · Failure · Dependency

> R4(깊이 게이트) 캡처용. 정상 경로 외에 *구현 중 부딪힐* 실패/엣지/다른 계약 의존을 미리 열거. 없으면 "해당 없음" 명시(공란 금지).

- **실패·엣지 경로**: <입력 경계 / 타임아웃 / 부분 실패 / 동시성 등 — 각 경로의 기대 동작>
- **다른 계약 의존**: `[[raw/branch-notes/<other-branch>]]``D<n>` 에 의존 — <무엇을 consume 하는지, 그 계약이 바뀌면 본 브랜치 영향>

## 검증해야 할 주장 / Claims To Verify
  • Step 3: 구조 검증 (grep)

Run:

cd "/home/donghyeon/Documents/LLM Wiki" && grep -c "선택 조건 (언제 이 결정" templates/branch-note-template.md && grep -c "## 엣지·실패·의존" templates/branch-note-template.md && grep -c "## Decision Evidence Map\|## 구현 가이드\|## 검증해야 할 주장" templates/branch-note-template.md

Expected: 첫 둘 1, 셋째 3 (기존 핵심 섹션 보존 확인 — claim-gate 가 요구하는 Decision Evidence Map 유지).

  • Step 4: 체크포인트 — 템플릿 흐름이 자연스러운지, 과하지 않은지(YAGNI) 확인.

Task 5: 워크플로우 진입점 등재 — CLAUDE.md, AGENTS.md

Files:

  • Modify: CLAUDE.md
  • Modify: AGENTS.md

/depth 와 게이트가 워크플로우에서 발견 가능하도록 SSOT 진입점에 1줄씩 추가. 추가만(additive), 기존 규칙 변경 금지.

  • Step 1: CLAUDE.md 의 커맨드/파이프라인 목록 위치 확인

Run: cd "/home/donghyeon/Documents/LLM Wiki" && grep -n "/branch\|/ingest\|/lint\|커맨드\|command" CLAUDE.md | head -20 목적: 커맨드들이 나열된 섹션을 찾는다.

  • Step 2: CLAUDE.md 에 /depth 1줄 추가 (Edit 도구)

Step 1 에서 찾은 커맨드 목록에서 /branch 항목 바로 아래에, 그 항목과 같은 서식으로 다음 한 줄을 추가:

- `/depth <branch>` — 브랜치 노트가 구현 착수할 만큼 깊은지 read-only 판정 (기준: `rules/branch-depth-gate.md`). 착수 전 게이트.

(주변 항목의 실제 서식 — 불릿 기호·백틱·줄표 — 에 맞춰 조정. 임의로 다른 섹션을 건드리지 말 것.)

  • Step 3: AGENTS.md 에 rules 목록 + 커맨드 반영

Run: cd "/home/donghyeon/Documents/LLM Wiki" && grep -n "rules/\|linking-rules\|naming-conventions\|/branch" AGENTS.md | head -20 찾은 rules 목록에 rules/branch-depth-gate.md 를, 커맨드 목록(있으면)에 /depth 를 주변 서식대로 1줄씩 추가. 두 목록 중 존재하는 것에만 추가.

  • Step 4: 구조 검증 (grep)

Run:

cd "/home/donghyeon/Documents/LLM Wiki" && grep -c "/depth" CLAUDE.md && grep -c "branch-depth-gate" AGENTS.md

Expected: 둘 다 1+ (AGENTS.md 에 rules 목록이 없었다면 0일 수 있음 — 그 경우 Step 3 판단 기록).

  • Step 5: 체크포인트 — 추가가 additive 인지(기존 줄 변경 없음), 서식이 주변과 일치하는지 확인.

Task 6: 픽스처 회귀 — 게이트 보정

본 plan 의 진짜 "test". 감사기가 직관과 일치하는 판정을 내는지 확인. cwd 가 LLM Wiki 인 세션에서 실행.

대상 픽스처:

  • 깊은 브랜치 (Ready 근접 기대): feature-boundary-validation-mapping-contract — 여러 번 다듬어 실제 구현 근거로 쓰인 노트.

  • 얕은 브랜치 (Not ready 기대): 사용자가 "아직 얕다"고 아는 초기 브랜치 1개 (예: status_label: in-progress 이고 planned 항목이 많은 것). 후보 탐색: cd "/home/donghyeon/Documents/LLM Wiki" && grep -rl "documented-only\|planned" raw/branch-notes/ | head → 그 중 하나를 사용자와 합의해 선택.

  • Step 1: 깊은 브랜치 감사

/depth feature-boundary-validation-mapping-contract 실행 (또는 branch-depth-auditor 직접 디스패치). Expected: Ready 또는 Blocking 0소수. Blocking 이 다수면 → 룰북 R1R4 기준이 너무 빡셈 → Task 1 의 Pass 기준 재보정.

  • Step 2: 얕은 브랜치 감사

선택한 얕은 브랜치에 /depth <branch> 실행. Expected: Not ready + R1~R4 에 걸친 finding. Findings 가 비면 → 기준이 너무 느슨 → Task 1 재보정.

  • Step 3: finding 품질 점검

두 리포트의 각 finding 이 4종 세트(심각도·위치·예상 의구심·채울 방법)를 갖췄는지 육안 확인. 빠진 게 있으면 → Task 2 의 출력 형식/불변식 보강.

  • Step 4: 보정 루프

Step 1~3 에서 판정 방향이 직관과 어긋나면 Task 1(기준) 또는 Task 2(감사기 프롬프트)를 수정하고 다시 Step 1 부터. 방향이 맞을 때까지.

  • Step 5: 체크포인트 (최종) — 두 픽스처 판정이 직관과 일치 + finding 4종 세트 충족 → P2 완료. 사용자에게 결과 리포트.

Self-Review (작성자 점검 결과)

  • 스펙 커버리지: §4(4축)→Task1, §4.1(사다리)→Task1, §5(감사기)→Task2, §6(커맨드)→Task3, §7(템플릿)→Task4, §10(검증)→Task6, §12(산출물4개+진입점)→Task1~5. §11(P3)는 의도적으로 별도 사이클(범위 밖, 명시됨). 누락 없음.
  • placeholder: 각 파일의 전체 내용을 inline 제공(TBD 없음). Task6 얕은 픽스처만 "사용자 합의로 선택" — 이는 calibration test 의 본질(정답이 사용자 판단)이라 의도적.
  • 타입/명명 일관성: branch-depth-gate.md/branch-depth-auditor//depth 셋 통일. 축 라벨 R1~R4(Decision ID D* 와 분리). 실패모드 7종이 Task1 정의 ↔ Task2 사용 일치.

Execution Handoff

P2 구현 plan 완료. 다음 단계는 plan 본문 상단 안내대로 subagent-driven 또는 inline 실행.