# 맥락노트: codegraph-anu

## 4월 16일 ~ 4월 22일 타임라인

| 일자 | 사건 |
|---|---|
| 04-16 | Agent 미팅 만장일치(10/10) — codegraph 도입 합의 (`memory/meetings/2026-04-16-codegraph-adoption.md`) |
| 04-16 | task-1869 Phase 1 벤치마크 실행 (dev7-team) |
| 04-16 | 벤치마크 결론: code-review-graph는 file-level만 + max_nodes=500 상한 → 정밀도 낮음. 자체 AST가 Python 위주에 더 적합 (`memory/reports/codegraph-benchmark.md`) |
| 04-16~ | task-1869_2.2+1/+2/+3 — 자체 AST 스크립트 dispatch.py 통합 (3 PR 머지) |
| 04-16~ | `ast_dependency_map.py` 523줄 작성, dispatch.py에 통합 |
| 04-22 | worktree task-2117-dev1 — 다른 작업으로 코드그래프 워크트리 잔존 (codegraph 작업 잔존물 포함) |
| 05-01 | 금번 재검토 — Phase 2~4 미완 + AST timeout 빈번 발견 |

## 4월 결정 핵심

**미팅 합의 의도**: 함수 의존성 자동 추적 (= "어떤 변경이 어떤 파일에 영향?")

**Phase 1 벤치마크 결과**:
- code-review-graph v2.3.2: file-level 53~57파일 → 너무 많이 영향 보고, JS 컴포넌트도 포함되어 정밀도 낮음
- 자체 AST: Python import 기반, 평균 42ms, 정확
- → **자체 AST 채택**

**Phase 2 통합** (4-16~):
- `_get_ast_blast_radius()` (dispatch.py:1027)
- `_enrich_affected_files_with_ast()` (dispatch.py:3147)
- `worktree_manager.py` PR body에 blast radius 자동 삽입
- `codex_gate_check.py` AST callers 컨텍스트 추가

## 현재 상태 (2026-05-01)

### 작동 중

- ✅ `scripts/ast_dependency_map.py` 523줄 메인 머지
- ✅ dispatch.py에서 매 위임 시 자동 호출 (line 3147)
- ✅ PR body에 blast radius 삽입 (worktree finish 시)
- ✅ codex gate check에 AST callers 활용

### 작동 불안정

- ⚠️ task-2335 위임: `[ast-blast-radius] 타임아웃(30s) — 원래 affected_files 사용`
- ⚠️ task-2336 위임: 동일 timeout 발생
- ⚠️ 즉 **2회 연속 timeout** → 자동 보강 실효성 ~50%

### 미적용 (4월 합의했으나 실현 안 됨)

- ❌ code-review-graph MCP를 8개 봇 settings.json에 등록 (8.2x 토큰 절감 가능성 미실험)
- ❌ crg-daemon 백그라운드 자동 업데이트
- ❌ hub/bridge 노드 분석 (영향 큰 변경 식별)
- ❌ knowledge gap detection (테스트 누락 자동 알림)
- ❌ PR 리뷰 게이트에 risk score 자동 첨부
- ❌ get_suggested_questions (리뷰 자동 질문 생성)

### 잔존물

- 🗂️ `/home/jay/workspace/.code-review-graph/graph.db` 612MB (4-16 잔존, 사용 안 됨) — ✅ 2026-05-01 task-2337 정리 완료
- 🗂️ `.worktrees/task-2117-dev1/scripts/.codegraph-venv/` (4월 PoC용 venv) — ⏸️ dev1 활성 worktree, AST 패치로 분석 제외되어 영향 0이므로 보존
- 🗂️ `.worktrees/task-2117-dev1/memory/...` 다수 codegraph 관련 파일 — ⏸️ 동일 사유 보존

## 4월 실패 원인 (가설)

1. **워크스페이스 전체 모놀리식 그래프** — 612MB는 너무 큼, 인덱싱 느림, 노이즈 많음
2. **측정 지표 부재** — "토큰 절감" 효과 측정 안 함 → 정착 동기 부족
3. **시한 없음** — Phase 1 후 Phase 2~4 자동 진행 안 됨
4. **PoC 단계 건너뜀** — 8봇 일괄 적용 시도 → 부담 커서 흐지부지
5. **2개 트랙 혼동** — dispatch 보강 vs MCP 컨텍스트는 별개인데 한 번에 처리하려 함

## 이번 (codegraph-anu) 방지책

1. 프로젝트별 그래프 (InsuRo만 시작)
2. 명확한 KPI (토큰 30% 절감, 회귀 0)
3. 1주 시한 + 결과 보고 의무
4. PoC 1봇 1프로젝트
5. 트랙 분리 (Phase 1=AST 안정화, Phase 2=MCP PoC)

## task-2337 결과 (2026-05-01)

### Phase 1 — AST 안정화 (완료)

- 진단: `_iter_py_files`가 워크스페이스 27,062 .py 전체 스캔 → `.worktrees/` 중복 15,695개 포함 → BUILD_TIMEOUT 60s 도달 → dispatch 30s timeout 동시 초과.
- 패치: EXCLUDE_DIRS + 디스크 캐시 (`~/.cache/anu-ast/`).
- 결과: cold 5.56s / warm 0.18s. timeout 0%. 분석 대상 27,062 → 874 (96.8% 감소).
- 단위 테스트 6건 PASS.
- 커밋: `7ea8192e` (쿠쿨칸 패치), `3f06568d` (카마소츠 테스트).

### Phase 2 — MCP PoC 인프라 (완료)

- 패키지: code-review-graph 2.3.2 (4월과 동일 버전).
- v2.3.2 변경: `crg-daemon` 명령 부재 → `code-review-graph watch` 단일 명령으로 통합.
- InsuRo 그래프: 8초 빌드, 27MB, 377 files / 2,986 nodes / 28,984 edges.
- MCP 등록 위치: `/home/jay/projects/InsuRo/.mcp.json` (프로젝트 스코프).
  - 사유: 글로벌 `~/.claude/settings.json` harness 차단 + PoC 격리성 우수.
- 봇 재시작 불필요 — dev7가 InsuRo cwd에서 위임받으면 자동 활성.

### 1주 측정(Phase 2.5) 사전 보강 필요

- task-timer가 dev7 input/cache_read 토큰을 일관 수집하지 않음 (dev7 완료 task 44건 중 token_usage 있는 건수: 2건, 그것도 input=77/31로 비정상치).
- 1주 측정 신뢰도 위해 별도 task로 dispatch.py·task-timer 토큰 기록 보강 필요.

### 등록된 MCP 자동 활성 조건

- dev7 봇이 InsuRo 작업 위임받아 cwd가 InsuRo 또는 InsuRo worktree 내부일 때.
- 워크스페이스 작업은 영향 없음 (`.mcp.json`이 InsuRo 전용).

## 관련 파일

- 자체 AST: `/home/jay/workspace/scripts/ast_dependency_map.py`
- dispatch 통합 1: `/home/jay/workspace/dispatch.py:1027` (`_get_ast_blast_radius`)
- dispatch 통합 2: `/home/jay/workspace/dispatch.py:3147` (`_enrich_affected_files_with_ast`)
- 4월 미팅: `/home/jay/workspace/memory/meetings/2026-04-16-codegraph-adoption.md`
- 4월 벤치마크: `/home/jay/workspace/memory/reports/codegraph-benchmark.md`
- 4월 task: `/home/jay/workspace/memory/reports/task-1869.md`, `task-1869_2.2.md`, `task-1869_2.2+1.md` 등

## 봇 settings.json 위치 (Phase 2 참고)

- Claude Code 기본: `~/.claude/settings.json`
- 봇별 설정 위치는 dev7 워크플로우에서 확인 필요
- MCP 서버 등록 형식 (예시):
  ```json
  {
    "mcpServers": {
      "code-review-graph": {
        "command": "uvx",
        "args": ["code-review-graph", "serve"]
      }
    }
  }
  ```

## ohmymanager 관련 — 무관 (다른 프로젝트)

이 codegraph-anu 작업은 **아누 시스템 자체 인프라**임. InsuRo 비즈니스 로직과 무관. InsuRo는 단지 PoC 대상 프로젝트 1개로 사용될 뿐.
