# === Datos y secretos — NUNCA versionar (proyecto regulatorio) ===
.env
.env.*
*.key
*.pem
secrets/
credentials*
# Datasets en la raíz. Anclado con `/` para NO vetar el paquete fuente `src/nikodym/data/` (SDD-02).
# El comentario va en su propia línea a propósito: en `.gitignore` el `#` sólo abre comentario al
# principio de la línea, así que un `# …` al final convierte el patrón entero en un nombre literal
# que no existe — y este veto quedó inerte desde que se escribió (corregido 2026-07-25).
/data/
# Ficheros de datos en cualquier ruta, por extensión. La lista cubre lo que traen los datasets
# externos reales: no basta con los formatos que produce el proyecto.
*.csv
*.tsv
*.psv
*.parquet
*.xlsx
*.xls
*.feather
*.arrow
*.orc
*.dta
*.sav
*.data
*.jsonl
*.ndjson
*.db
*.sqlite
*.sqlite3
*.h5
*.hdf5
*.pkl
*.pickle
# El catálogo de datasets externos NO es un dataset: es la documentación de con qué datos reales se
# valida la librería, y sin esta excepción el veto de `*.csv` se lo tragaría en silencio — que es
# exactamente el modo de fallo que motivó `tests/unit/test_gitignore.py`.
!/docs/datasets/catalogo.csv
# `descargar.sh` resuelve su `raw/` relativo al directorio del script. Se ejecuta desde
# `data/externos/` (donde es un symlink), pero si alguien lo corre desde su ubicación versionada
# bajaría gigabytes de datos a un directorio que sí se commitea. Este veto es la red.
/docs/datasets/raw/
# Los comprimidos se vetan SÓLO bajo `data/`: `web/src/fixtures/demo/*.zip` son fixtures de la demo
# que sí se versionan, y un veto global los dejaría fuera en silencio en la próxima recaptura.
/data/**/*.zip
/data/**/*.gz
/data/**/*.tar
/data/**/*.7z

# === Python ===
__pycache__/
*.py[cod]
*.egg
*.egg-info/
.eggs/
build/
dist/
*.whl

# === Entornos / uv ===
.venv/
venv/
env/
.uv/
uv.lock.bak
/.pnpm-store/

# === Testing / calidad ===
.pytest_cache/
.mypy_cache/
.ruff_cache/
.hypothesis/
.coverage
.coverage.*
htmlcov/
coverage.xml

# === Workdir del UI instalable ===
# `python -m nikodym.ui` lo crea donde se lo lance, así que basta con arrancar la interfaz DENTRO
# de un clon para que aterricen aquí el parquet del dataset materializado y el results.json de cada
# corrida. En un repo público eso es una fuga de datos a un `git add .` de distancia. Sin ancla `/`
# a propósito: el workdir sigue al cwd del usuario, no a la raíz del repo.
.nikodym_ui/

# === Volcados del MCP de Playwright ===
# Mismo modo de fallo que el workdir de arriba, y ya ocurrido: verificar la interfaz en vivo desde
# la raíz del repo dejó aquí dos volcados de consola que se commitearon el 2026-07-31. No son sólo
# ruido — el volcado recoge TODA la consola de la sesión del navegador, incluidas las URL de lo que
# se estuviera navegando, así que en un repo público publica por dónde anduvo quien lo generó.
# Sin ancla `/` a propósito: el MCP escribe en el cwd de quien lanza, no en la raíz del repo.
.playwright-mcp/

# Salidas del arnés clean-room (B2.4). La traza y el screenshot de un fallo pueden recoger la
# pantalla entera de la corrida —incluidos nombres de columnas del dataset que se estuviera
# usando—, así que no entran a un repo público ni por descuido. En CI viajan como artefacto del
# job, que caduca solo.
web/test-results/
web/playwright-report/
web/blob-report/
web/.playwright/

# === MLflow / artefactos de modelos ===
mlruns/
mlartifacts/
*.joblib
*.pkl

# === Quarto / reportes generados ===
/.quarto/
*_files/
_site/

# === mkdocs (sitio de documentación generado; NO se versiona, el deploy lo decide Cami) ===
/site/

# === Jupyter ===
.ipynb_checkpoints/

# === OS / IDE ===
.DS_Store
Thumbs.db
.idea/
.vscode/
*.swp
*~

# Config local de agentes. `launch.json` sí se versiona: levanta la landing en modo demo, que es
# la única forma de ver el selector de demos —sólo existe en `demo.nikodym.cl`— antes de deployar.
.claude/*
!.claude/launch.json

# Artefactos de corridas locales del pipeline (output_dir relativo por defecto = "reports")
/reports/
# Workdir transitorio de la captura canónica (F1/F3/F4)
/.nikodym-demo-fixtures-f1/
/.nikodym-demo-fixtures-f3/
/.nikodym-demo-fixtures-f4/

# Proceso interno de auto-desarrollo (motor = skill auto-desarrollo-claude; contexto en /privado/ local)
HANDOFF.md
AUTONOMY-LOG.md
docs/AUTONOMY.md

# Local private workspace (nested git repo, never tracked here)
/privado/
