# Rust / Cargo
target/
Cargo.lock
**/*.rs.bk

# Release workflow
.release-skip

# WIP crates (excluded from workspace, not ready for commit)
crates/zigzag/

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
venv/
env/
ENV/
.venv

# PyO3 / Maturin
*.so
*.pyd
*.dylib

# IDEs
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Testing
.pytest_cache/
.coverage
htmlcov/
.tox/
.hypothesis/

# Test fixtures: large binary files (ZIP archives of aggTrade data)
tests/fixtures/*.zip

# Type checking
.mypy_cache/
.dmypy.json
dmypy.json
.pytype/

# Jupyter
.ipynb_checkpoints

# Environment
.env
.env.local

# OS
.DS_Store
Thumbs.db

# Project-specific
examples/data/
*.csv
*.parquet
*.jsonl

# Exception: Include test data fixtures (overrides *.csv pattern)
!test_data/**/*

# Exception: Firecrawl research corpus manifest (overrides *.jsonl pattern)
# See Skill(devops-tools:firecrawl-research-patterns) — corpus-index.jsonl is
# the append-only registry pointing to docs/research/corpus/*.md files; tracking
# it keeps the manifest in sync across machines.
!docs/research/corpus-index.jsonl

# Exception: Audit-folder litscan JSONLs (overrides *.jsonl pattern)
# These are the structured per-metric / per-paper / per-search corpora produced
# by brute-force research agents and consumed by the dashboard generator
# (e.g. findings/dashboard/instruments/build_instruments.py reads
# implementations.jsonl). Committed so the catalog is reproducible from a fresh
# clone.
!findings/evolution/audits/**/implementations.jsonl
!findings/evolution/audits/**/papers.jsonl
!findings/evolution/audits/**/search_log.jsonl
!findings/evolution/audits/**/foss_candidates.jsonl
!findings/evolution/audits/**/per_slice.jsonl

# Exception: parameterless promotion-sweep inventory (SSoT ledger, overrides *.jsonl).
# Append-only input to parameterless_probe.py --sweep; must be versioned.
!findings/evolution/shared_data/candidate_knobs.jsonl
# Exception: candidate lifecycle ledger (machine-readable SSoT; prevents double-evaluation).
!findings/evolution/shared_data/candidate_ledger.jsonl

# Benchmark and profiling data (generated locally via mise tasks)
bench-data/
profile-data/
pgo-data/
pgo-*.profdata

# Crate output directories (validation data, test outputs)
**/output/

# Temporary directories (visible in broot via special_paths)
tmp/

# Generated visualizations (backtesting.py Bokeh outputs)
*.html
examples/output/
# Un-ignore the research dashboard tree — HTML pages are first-class committed artifacts,
# not generated Bokeh output. Mirrors the pattern at line 118 (!python/opendeviationbar/data/).
!findings/dashboard/**/*.html

# Link checker cache + report outputs (Lychee + doc-relative-path linter)
# These are regenerated by doc-quality tooling and must never be committed.
.lychee*
.lycheecache
.link-check-results.md
.lint-relative-paths-results.txt
logs/
node_modules/
bun.lock

# ClickHouse server runtime data (created when running `clickhouse server` locally)
data/
# Issue #79: Un-ignore package data for symbol registry (maturin wheel inclusion)
!python/opendeviationbar/data/
# Issue #95: Un-ignore feature manifest TOML (SSoT, embedded in Rust binary)
!crates/opendeviationbar-core/data/
metadata/
store/
preprocessed_configs/
status
uuid
user_files/
user_scripts/
user_defined/
format_schemas/
access/
test_data/
# Claude Code project config (sessions, local state)
.claude/*
# Exception: Share skills, hooks, settings, and slash-command wrappers with repo collaborators
!.claude/skills/
!.claude/hooks/
!.claude/settings.json
!.claude/commands/
# Nested .claude/ dirs in subcrates (session notes, not skills)
crates/**/.claude/
.gitnexus
.mise.local.toml
deploy/*.local.env
.mcp.json
.pi/
.scratch/
scripts/maintenance/odb-dep-upgrade

# Claude Code background-shell working-state manifest (in-flight `run_in_background` PIDs).
# Regenerated each Claude Code session; an empty manifest.json was accidentally committed
# in 93fd632e and was never read by any script, hook, or doc.
.bg-shell/

# Autonomous-loop campaign state (per-loop CONTRACT.md, PROVENANCE.md, state archives).
# Generated by /autoloop:start; persists across /loop firings; never committed.
# Ref: .claude/skills/autonomous-agent-ops/SKILL.md
.autoloop/

# Contractor-site publish artifact metadata (.published.json from internal site sync).
# Local-only mirror of last-published commit hash + URL; regenerated on each publish.
docs/contractor-site/

# html-showcase: published-page provenance manifests
**/.published.json
# html-showcase: Pagefind static search index (regenerated per nav build)
**/pagefind/
findings/dashboard/instruments/codec-foci-runs/iterations.jsonl

# CodeGraph local index (not shared)
.codegraph/
