# ── Power BI Project (PBIP) — Microsoft official baseline ──
# Local workspace settings (can carry connection context) and local data cache.
# G1 requires these two exact lines verbatim; keep them.
**/.pbi/localSettings.json
**/.pbi/cache.abf
# Plus the rest of the machine-local .pbi/ folder (editorSettings.json etc.).
# definition/ stays tracked (model-as-code); never ignore definition/.
**/.pbi/

# ── Secrets ──
.env
.env.*
!.env.example

# ── Raw source data (never commit; bronze is loaded into Postgres, not git) ──
# Raw CSV/Excel sources land in the DB bronze layer; the files stay local + untracked.
data/raw/

# ── Python (future pipelines) ──
__pycache__/
*.py[cod]
.venv/
venv/
.ipynb_checkpoints/

# ── Ad-hoc / scratch EDA notebooks at the repo root ──
# Exploratory notebooks kept locally; not part of the governed medallion pipeline
# (which lives in warehouse/ + powerbi/ + mappings/). Anchored to root so an
# intentionally-tracked notebook under a notebooks/ dir is unaffected.
/retail-sales-dataset.ipynb

# ── OS / editor junk ──
.DS_Store
Thumbs.db
*.swp
.idea/
.vscode/*
!.vscode/extensions.json

# ── Python build / test / lint caches ──
.pytest_cache/
.ruff_cache/
*.egg-info/
.coverage
htmlcov/
dist/
build/
.mypy_cache/
tmp/

# ── Vendored Power BI Modeling MCP (36MB binary tool, not source) ──
# The Microsoft Power BI Modeling MCP server, kept locally to build/edit the
# semantic model. It is a vendored binary, never committed. The launcher config
# is machine-local too: a tracked .mcp.json would point every fresh checkout at
# this untracked tree and fail to spawn (Codex PR#143 review). Copy
# .mcp.json.example -> .mcp.json after vendoring the extension.
*.vsix
tools/powerbi-modeling-mcp/
.mcp.json

# --- Agent-harness runtime scratch (machine-local, never committed) ---
# Per-run scratch created by coding-agent harnesses: Codex (.codex/), other
# agent runtimes (.agents/), and the temporary git worktrees a Workflow run
# mounts (.claude/worktrees/). NOTE: only .claude/worktrees/ is ignored, NOT
# all of .claude/ -- .claude/skills/ and .claude/workflows/ are tracked source.
.agents/*
!.agents/plugins/
.agents/plugins/*
!.agents/plugins/marketplace.json
.codex/
.claude/worktrees/

# Public-distribution validation scratch. Only sanitized examples under
# tests/fixtures/public_distribution/ are tracked.
.distribution-build/
.seshat-acceptance/
acceptance-evidence/private/
.claude-seshat-test/
.codex-seshat-test/

# F038 BPA runner auto-generated smoke evidence: machine-specific (absolute paths
# + timestamp), regenerated on every run. The durable record is the hand-written
# six-gate-verdict-*.md alongside it, which IS committed.
specs/038-tabular-editor-bpa-adapter/evidence/smoke-*.md

# Local git worktrees (isolated workspaces)
.worktrees/

# Demo harness (spec 083) working directory: `retail demo init` materializes the
# committed sample fixtures here for a throwaway run; the durable source is the
# committed mappings/demo_sample_orders/ + tests/fixtures/demo/. Never committed.
.demo-work/

# Generated ecosystem output (passports, benchmark runs, demo HTML, explorer).
# Durable reference fixtures live in tracked source directories, never here.
.seshat-output/

# Portfolio Watch (spec 131): the local run summary + baseline-diff snapshot
# (`retail watch`). Machine-local run output, regenerated every run; not a
# gate, not a source of truth. Git-ignored by default (research D2) -- a team
# that wants a reviewable committed baseline may deliberately un-ignore/commit
# their own .seshat/watch/snapshot.json.
.seshat/watch/

# Dagster orchestration adapter (spec 134): raw per-run records
# (records.jsonl + summary.json) under .seshat/dagster/runs/<run-id>/.
# Machine-local run output; the COMMITTED record is the rendered
# orchestration/dagster/run-evidence/<run-id>.md.
.seshat/dagster/
# Governed dbt adapter local state (spec 133). The example profile is tracked;
# the local profile contains env_var() references only and real values stay in
# the already-ignored .env.
/profiles.yml
/.user.yml
/dbt/target/
/dbt/logs/
/.seshat/dbt/
