__pycache__/
*.pyc
.venv/
venv/
dist/
# 예외: 디자인 허브 산출물은 **계약**이라 추적한다. 소비 리포의 사본
# (app/src/tokens.*.css·theme.ts)이 커밋돼 있으므로 그 비교 대상도 리포에 있어야
# `sync_out.py --check`(CI 드리프트 게이트)가 성립한다. 없으면 게이트가
# "[MISSING·허브]" 로 죽는다 — 2026-08-08 CI 실패의 원인.
!design-hub/dist/
# 단, Claude Design 푸시 번들은 제외 — 업로드 직전에 만드는 임시 산출물이고
# 대조할 커밋된 소비 사본이 없다(그쪽은 claude.ai 프로젝트에 산다).
design-hub/dist/claude-design/
build/
*.egg-info/
models/
vinc_store
*.lbug
vinc_e2e/
node_modules/
app/src-tauri/target/
app/src-tauri/binaries/
app/src-tauri/gen/
# .claude/ 는 기기별 설정(launch.json·ui-events.jsonl·worktrees)이라 **어느 깊이에서도**
# 추적하지 않는다. 예외는 이제 없다. 역할 껍데기는 `agents/shells/` 에서 추적되고
# (`agents_sync.py --check` 가 CI 에서 대조), 하네스가 읽는 사본은 리포 밖 워크스페이스
# 루트에 `--install` 이 쓴다. 리포 안 `.claude/agents` 는 체크아웃의 브랜치를 따라
# 수가 달라지는 두 번째 로스터였다.
# ⚠ 전에는 루트의 `.claude/agents/` 만 되살리려고 네 줄을 겹쳐 썼다(한 줄로는 예외가
# 사문이 되거나 `_migration/**/.claude/` 중첩본이 새어 나갔다, 2026-08-23 PR #69).
# 예외가 사라졌으니 모든 깊이를 잡는 이 한 줄이면 된다.
.claude/
# 서명·접속 키 — 커밋되면 되돌릴 수 없다. 지금 키들은 리포 **바깥**(워크스페이스
# 루트)에 있어 커밋된 적이 없지만, 누가 안으로 옮겨도 막히도록 패턴을 박아 둔다.
# 업데이터 개인키를 잃으면 배포된 전 사용자가 자동 업데이트에서 영구 이탈한다
# (복구 경로 없음 — DEPLOYMENT.md §1.6 백업 절차 참조).
*.key
*.pem
*.p12
*.pfx

# uv 캐시 락파일 — 로컬 테스트 실행(`uv run`)이 만든다. 정본 의존성은
# pyproject.toml 이고, 이 락은 기기별 파생물이라 추적하지 않는다.
uv.lock

# 평가·리허설 부산물 — 모델 가중치 수백 MB 가 여기 앉는다.
# 이 워킹트리는 세션 공유라 남의 `git add -A` 가 이것을 집는다.
.cache/
work/

# design-hub capture PNGs are build products of scripts/capture_*.mjs; the manifests are committed
design-hub/reports/captures/**/*.png
