# Python-generated files
__pycache__/
*.py[oc]
build/
dist/
wheels/
*.egg-info

# Virtual environments
.venv
*.zip
*.json
*.pkl
*.csv
.DS_Store
# Runtime storage dir (api/config.py storage_path default "./storage"), anchored
# to the repo root so it does NOT also ignore the src/mmm_framework/storage/ pkg.
/storage/
node_modules/

!package.json
!package-lock.json
# Measured-evidence artifacts the docs site quotes (baked notebook outputs)
!nbs/artifacts/backtest_metrics.json
!nbs/artifacts/runtime_benchmark.json
!nbs/artifacts/pinkham_pressure_test.json
!nbs/artifacts/causal_*.json
# Docs-site search + glossary data (generated by docs/tools/build_search_index.py,
# consumed client-side by the Cmd-K palette and glossary tooltips — must ship)
!docs/shared/search-index.json
!docs/shared/glossary.json
# SEO build manifest (content hash + stamped dateModified per page). Tracked so
# build_seo.py is idempotent across checkouts — without it every clone would
# re-date the whole site on its first run.
!docs/shared/seo-manifest.json
# v1.0 contract artifacts — must be tracked (rest-api.html source of truth +
# the CI route-snapshot gate in tests/test_api_contracts.py)
!docs/shared/openapi.json
!tests/contracts/rest_routes.json
# Bundled example datasets shipped inside the package (load_example) — these MUST
# be tracked and packaged despite the global *.csv / *.json ignores.
!src/mmm_framework/datasets/data/*.csv
!src/mmm_framework/datasets/data/*.json

*.db
*.db-*
*.nc
*.nc.gz

# Local LLM/model configuration (copy of config/model_config.example.yaml)
config/model_config.yaml
model_config.yaml

*.pdf

# Agent runtime output (per-session workspace; default MMM_AGENT_WORKSPACE root)
agent_workspace/

# Seeded Atelier demo artifacts (datasets + rendered reports; regenerated by
# scripts/seed_atelier_demo.py)
demo_data/atelier/

critique_multi.md

# Coverage artifacts (generated by pytest-cov / CI)
.coverage
.coverage.*
coverage.xml
htmlcov/

# === Generated artifacts: untracked from git, kept on local disk ===
# These were removed from tracking via `git rm --cached`; the rules below stop
# the regenerated outputs from being re-added. (Hand-authored docs under docs/
# and docs/examples/ are NOT matched and stay tracked.)

# Root-level rendered reports & slide decks (regenerated by examples/ + agent)
/*_report.html
/*_slides.html
/test_plotly.html

# Root-level exploratory plots
/channel_spends.png
/data_exploration_1.png
/data_exploration_2.png
/media_spend_by_week.png

# Root scratch / planning markdown (not code documentation)
/agent_workflow_output.md
/docs-improvement-plan.md
/critique.md
/REFACTORING_GUIDE.md

# Notebook-rendered reports & data dumps (the measured-evidence JSONs above are
# kept via their ! exceptions; nbs/legacy/mff.csv is already covered by *.csv)
nbs/*.html
nbs/legacy/*.html
nbs/artifacts/*.html
nbs/legacy/output.xlsx

# Redundant copies of the docs/examples/ demo reports (the docs site links to
# the docs/examples/ copies, which stay tracked)
examples/mmm_report_*.html

# Graphify skill output
/graphify-out/

# Stress / robustness run logs (the report + matrix themselves stay tracked)
tests/synth/results/*.log

# Local-only planning doc (kept on disk, never committed)
/technical-docs/production-readiness-action-plan.md
assets/*.pptx

# Root-level / assets generated slide decks & reports (agent output, never committed)
/agent_prefit_readout.html
/agent_slide_deck.pptx
/assets/Media Performance Readout.html
/.claude/scheduled_tasks.lock
frontend/tsconfig.tsbuildinfo

# Intermediate per-frame animation directories (final .gif outputs stay tracked)
nbs/artifacts/_*/
.env

# Local screen-recording scratch (large video files; never committed)
recordings/
# Session DB backups produced by the prune/backup CLI (never committed)
# (legacy pre-platform path kept — untracked runtime DBs may still live there)
src/mmm_framework/api/sessions_backup_*.sql.gz
src/mmm_framework/platform/sessions_backup_*.sql.gz
sessions_backup_*.sql.gz
