# ── Java / Maven ──────────────────────────────────────────────
target/
*.class
*.jar
*.war
*.ear
!.mvn/wrapper/maven-wrapper.jar
dependency-reduced-pom.xml
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.properties

# ── IDE ───────────────────────────────────────────────────────
.idea/
*.iml
*.ipr
*.iws
.vscode/
.settings/
.project
.classpath
*.code-workspace

# ── OS ────────────────────────────────────────────────────────
.DS_Store
Thumbs.db

# ── Secrets / credentials (절대 커밋 금지) ────────────────────
*.gpg
*.asc
secring.*
.env
.env.*
settings-security.xml
.scamanager/token   # SCAManager 인증 토큰 — 로컬 전용(mode 600), 환경변수 SCAMANAGER_TOKEN 대안

# ── SDD 진척 원장 (로컬 스크래치) ─────────────────────────────
.superpowers/

# ── Python (향후 SDK) ─────────────────────────────────────────
__pycache__/
*.py[cod]
.venv/
venv/
dist/
build/
*.egg-info/
.coverage
htmlcov/
.ruff_cache/
.pytest_cache/

# ── Node.js / TypeScript ──────────────────────────────────────
node_modules/
.vite/
coverage/
*.tsbuildinfo
cover.out
cover.logic.out
# rust — `cargo llvm-cov --lcov`가 SonarCloud에 먹일 리포트를 여기에 쓴다(CI가 매 실행마다 생성).
lcov.info

# ── Gradle / Kotlin (빌드 스크래치) ───────────────────────────
# kotlin/.gitignore가 SDK 모듈은 이미 덮지만, Gradle 스크래치는 build.gradle.kts가
# 있는 **아무 디렉터리에서나** 생긴다 — scripts/test/fixtures/doc-guard/src(가드
# 테스트용 가짜 빌드파일)에서 실제로 .gradle/이 생겨 커밋될 뻔했다. 루트에서 막는다.
.gradle/
.kotlin/

# SCAManager 개인 코드리뷰 도구 — 공개 저장소에 포함하지 않는다(개인 저장소/전역 git 템플릿으로 관리)
.scamanager/

# coverlet(.NET)이 테스트 실행 때마다 테스트 프로젝트 옆에 떨어뜨리는 커버리지 산출물.
# ⚠️ 절대경로가 박혀 있어 커밋되면 개인 머신 경로가 공개 이력에 남는다(실제로 한 번 유입됨 —
# 742a01b의 coverage.json에 `F:\DEVELOPMENT\...` 경로가 그대로 들어갔다).
# ⚠️ 출력 파일명은 `/p:CoverletOutputFormat`이 정한다. 오래 `coverage.json`(기본 json 형식)만
# 막아뒀는데 dotnet-ci와 harness가 실제로 쓰는 형식은 **cobertura**라, 로컬에서 CI와 같은 명령을
# 돌리면 무시되지 않는 `coverage.cobertura.xml`이 남았다(실제로 남는 것을 확인). 한 형식만 막으면
# 나머지가 새므로 coverlet이 내는 형식을 전부 막는다.
coverage.json
coverage.cobertura.xml
coverage.opencover.xml
coverage.info
# ⚠️ 단, 커버리지 가드의 테스트 픽스처는 산출물이 아니라 **소스**다. 위 규칙들은 파일명만 보므로
# `coverage.cobertura.xml` 픽스처를, 그리고 위쪽 `coverage/` 규칙은 디렉터리째 삼킨다 — 그러면
# 로컬에서는 테스트가 통과하는데 CI에서는 픽스처가 없어 깨진다(실제로 커밋 직전에 걸렸다).
# ⚠️ 예외는 이 디렉터리로만 좁힌다. `!scripts/test/fixtures/**`처럼 넓게 열면 doc-guard 픽스처
# 아래 실제 빌드 산출물(.gradle 잠금·바이너리 캐시)까지 추적된다(이것도 실제로 걸렸다).
!scripts/test/fixtures/coverage-gate/**

# Playwright MCP 브라우저 세션 산출물(스냅샷·콘솔 로그) — 진단용 임시 파일이다.
.playwright-mcp/
