# secrets
.env
.env.local
.env.*.local
.env.sandbox
.envrc
.secret/

# sibling projects nested into this tree but managed outside the root tree
# (submodules track a gitlink here; independent repos stay ignored)
/bench/
/schiftql/
/sdk/
/mobile/
/schift-api/
/schift-db/
/schift-worker/
/schift-web/

# removed legacy tracked trees; do not recreate product code here
/api/
/web/
/clients/sdk/schift-index/
/.worktrees/
/schift-terminal-opencode/
/services/*/research/
/services/*/artifacts/
/services/erp/contracts/w2a/
/services/zodal/

# python
*.pyc
__pycache__/
*.egg-info/
.pytest_cache/
.ruff_cache/
venv/
.venv/

# node
node_modules/
dist/
.next/
out/
coverage/
!/packages/service/coverage/
test-results/
/web/e2e/screenshots/
.astro/
.playwright-mcp/

# os
.DS_Store

# build artifacts
.aws-sam/
*.db
.build/
target/
.test-dist/
.wrangler/
infra/tfplan

# ingestion logs
resources/fixtures/template_db/korean_law/scripts/*.log
scripts/ingest_korean_law/*.log
scripts/ingest_korean_law/compare_results.json

# engine runtime data
engine/data/
engine/data-sq8/

# large binary / model data
*.bin
*.pt
*.npy
*.npz
*.pkl
*.webm
*.faiss
*.ttf

# large research / sample data
/research/*
!/research/bench/
/research/bench/*
!/research/bench/lance-gcs-rag/
/research/bench/lance-gcs-rag/*
!/research/bench/lance-gcs-rag/scripts/
/research/bench/lance-gcs-rag/scripts/*
!/research/bench/lance-gcs-rag/scripts/real_case_benchmark.py
!/research/bench/lance-gcs-rag/tests/
/research/bench/lance-gcs-rag/tests/*
!/research/bench/lance-gcs-rag/tests/test_real_case_benchmark.py
!/research/bench/mem0-vs-schift/
!/research/lens-eval/
/research/lens-eval/*
!/research/lens-eval/INVENTORY-ncloud.md
!/research/lens-eval/INVENTORY-gcp.md
!/research/lens-eval/scripts/
/research/lens-eval/scripts/*
!/research/lens-eval/scripts/r2_inventory.py
infra/embedding-worker/model/
/sample-sets/

# terraform
infra/.terraform/
*.tfstate
*.tfstate.backup
*.tfstate.*.backup
.terraform.lock.hcl
!infra/.terraform.lock.hcl

# temp / scratch files
tmp/
/output/
tmp-*.png
*.prev.json
*.prev.tsv
engine-exp/

# autoresearch scratch
autoresearch-*.json
autoresearch-*.md

# data dir (large/generated)
data/
!api/scripts/data/
!api/scripts/data/*.py
!api/server/legal/intake/templates/data/
!api/server/legal/intake/templates/data/*.json
!models/law/data/
!models/law/data/templates/
!models/law/data/templates/*.json
!packages/doc-redact/python/doc_redact/ner/data/
!packages/doc-redact/python/doc_redact/ner/data/korean_surnames.txt

# reports (generated)
reports/

# local extraction logs from private lecture PDFs
logs/강의안 PPT_*.json

# internal tools
.omx/
.cache/
.claude/
.antigravitycli/
.sisyphus/
.superpowers/
.xcodebuildmcp/
.tmp-*/

# vendored Korean tokenizer output in active engine workspaces
engine/mecab-ko-dict/

# loose screenshots / one-off captures (.local/ is the staging area)
*.png
!docs/**/*.png
!apps/**/public/**/*.png
!web/**/public/**/*.png
!web/src/**/*.png
!packages/**/*.png
.local/

# misc
net-all.txt

# hwp-extract 테스트로 루트에 떨어지는 개인/추출 문서 산출물 (index.xhtml+styles.css+bindata)
/[0-9]*_*/

# defensive: scripts run from the wrong cwd (api/) end up creating
# `api/api/scripts/...`. Don't track that misplaced subtree.
api/api/
.env.polar.skus
/schift-terminal/

# standalone repo managed separately from the Schift monorepo
/agent-workflow-protocol/
/derivatives/managed-runtime-lab/
/managed-runtime-lab/
/mecab-ko-dic/
/derivatives/*
!/derivatives/README.md
/core-dependencies/*
!/core-dependencies/README.md
# 고객사 작업 파킹 (겐츠 등). 고객 데이터·산출물이 모노레포에 실리지 않게 전부 ignore.
/customers/*
!/customers/README.md
/services/meetings-api/
/services/erp/

# Local artifacts kept out of the repo (2026-06-10 cleanup)
/outputs/
/logs/

# Defensive ignore for broken artifacts left by a failed subagent run.
# These modules are not part of the codebase and recreate themselves intermittently.
services/agent-hub/src/agent_hub/hr_attendance_*.py
services/agent-hub/src/agent_hub/routes_hr_attendance.py
services/connector/lib/hr_attendance_*.py

# zodal-estimator는 별도 git repo (nested)
/services/zodal-estimator/

# Local agent/tooling scratch state (per-machine, not source — 2026-07-13)
/.codex/
/.omc/
/.omo/
/.codex-tmp/
.playwright-cli/
/.venv-api
/_workspace/

# APM faithful-runner eval outputs (scratch — regenerated per run)
/services/agent-hub/evals/apm-faithful-runner/outputs/
/services/agent-hub/evals/apm-faithful-runner/outputs_demo/
.pumasi/

# Plaud local sync cursor (scripts/plaud)
.plaud-sync-state.json

# Python sdist/wheel 빌드 산출물 (clients/sdk/cli 등) — 소스가 아니라 결과물이다
/clients/sdk/*/build/

# field-kit 은 **별도 private 레포**다(2026-09-01 오너 결정):
#   gh repo clone schift-io/schift-field-kit clients/field-kit
# 여기 커밋하면 node_modules 포함 674MB·34,347파일이 히스토리에 영구히 남는다.
# ⚠️ 그 checkout 이 없으면 `./deploy.sh field-kit-foundry` 가 안 돈다 —
# 배포 스크립트가 첫 줄에서 clone 명령을 찍고 죽는다(조용히 실패하지 않는다).
/clients/field-kit/

# PII 릴리스 추출 산출물 — 경로가 겹쳐 있는 게 추출 사고의 흔적이다
# (`services/pii/release/services/pii/release/...`). 107MB `.onnx` 모델
# 바이너리라 소스가 아니라 결과물이다.
/services/pii/release/services/

# 고객·실학습자 데이터 픽스처 — 모노레포에 커밋하지 않는다 (5f28a839a 재발 방지)
packages/app/warehouse/python/tests/fixtures/edu_real/
