/.claude
/.direnv
/.python-version

/target

# Per-machine build tuning, and *only* that. The linker a checkout uses is a
# fact about the machine, not about the crate: this repo's local config points
# rustc at `mold` to cut the 58-test-binary link step, and CI's runners have no
# mold to point at. Committing it would break every job in `ci.yml` and every
# clone without it, for a setting that cannot change a test's outcome — so it
# stays local. `Cargo.toml`'s `[profile.dev]` carries the part that *is*
# portable (trimmed debuginfo) and is committed.
#
# To set one up: see docs/CONTRIBUTING.md, "A faster local build".
/.cargo/config.toml

# pixi's solved environments. `pixi.toml` and `pixi.lock` ARE committed — the
# lock is the point (see the header in pixi.toml); only the materialised envs
# under .pixi/ are disposable.
/.pixi

# NB: tests/data/talib_expected.csv is deliberately NOT ignored. It used to be,
# which is why the TA-Lib cross-check silently skipped on every clean checkout
# while being listed as a drift guard. It is generated but committed, exactly
# like metrics_expected.csv beside it — regenerate with
# `tools/gen_talib_fixtures.py` and commit the result.

# Fixture generator (Python) internals
__pycache__/
*.py[cod]
.mypy_cache/
.ruff_cache/

# Internal working notes — design proposals, scratch write-ups, agent output.
# The repo's docs are the ones a *user* reads; a proposal that shipped belongs
# in ARCHITECTURE.md or a commit message, not as a file of its own.
docs/proposals/

# Scratch screenshots at the repo root — browser-automation output, not assets.
# Root-anchored so `docs/assets/` can still carry a real image. These were
# swept in once by a `git add -A` and put the packaged crate over crates.io's
# 10 MiB limit, which surfaced as an opaque 503 from the CDN rather than a
# size error. `exclude` in Cargo.toml is the second line of defence.
/*.png
.playwright-mcp/
