# Secrets — never commit
.env
.env.*
*.key
*.pem

# Python
__pycache__/
*.py[cod]
.venv/
venv/
.pytest_cache/
.ruff_cache/
.pyright/
dist/
build/
*.egg-info/

# uv
# (uv.lock IS committed)

# Node / frontend
node_modules/
web/dist/
web/node_modules/
.vite/
*.tsbuildinfo

# Embedded cockpit build (generated by scripts/build.sh; force-included into the wheel)
src/orionfold/server/static/

# Playwright
test-results/
playwright-report/
.playwright/
e2e/**/screenshots/__diff__/

# Local data & artifacts
*.sqlite
*.sqlite3
*.db
# Anchored to repo root: a top-level local data dir. Must NOT match the bundled
# src/orionfold/data/ package, whose sample datasets ship inside the wheel.
/data/
# Generated receipts are not committed (samples/ committed ones are curated by hand)
samples/receipts/*.generated.*

# OS / editor
.DS_Store
*.swp
.idea/
.vscode/

# Obsidian (this repo is also a vault) — personal UI state, not shared config
.obsidian/

# Playwright MCP scratch (screenshots, snapshots, console logs)
.playwright-mcp/
.superpowers/

# Proof field-note staging (Layer B skill) — scaffolds + website-ready bundles
# are local working artifacts; the operator syncs bundles into ~/orionfold/website
# by hand. Never committed here (spec _SPECS/2026-06-24-proof-field-note-layer-b-skill.md §5).
_field-notes/

# Built domain packs (scripts/build_advisor_pack.py) — a pack is a build artifact
# carrying a real stored reference receipt; the operator ships it via the storefront,
# never commits it here.
_packs/

# B7 — Private strategy content lives in ~/orionfold/strategy/orionfold-proof/ and is
# symlinked back here (structural privacy, ADR-0006 §5 as amended 2026-06-24).
# Only released code + public docs are public. These symlinks must never be committed.
/_IDEAS
/_SPECS
/_field-notes
/HANDOFF.md
/docs/worklog
/docs/superpowers
/.claude/skills
/.claude/agents
