# Generated by Cargo
/target/
# Alternate target dirs. Incremental and non-incremental builds cannot share one
# `target/` (flipping CARGO_INCREMENTAL re-fingerprints the whole dependency
# tree), so the fast-iteration recipe in CLAUDE.md uses a second one.
/target-*/

# Cargo.lock is included for binary crates
# Cargo.lock

# IDE
.idea/
.vscode/
*.swp
*.swo
*~

# macOS
.DS_Store

# Test output
*.profraw
*.profdata

# Coverage
coverage/
tarpaulin-report.html
tarpaulin-report.json
cobertura.xml

# Fuzz
fuzz/artifacts/
fuzz/corpus/
fuzz/target/

# Memory profiling
dhat-heap.json

# External validation data (large files)
data/clinvar/
data/exac/
data/gnomad/
data/lovd/
data/civic/
data/uta/
data/seqrepo/
data/ferro/
data/mutalyzer/
external-repos/
reference_data/
results/

# Local configuration (generated via `ferro-web config`)
config/service.toml

# Local design specs and implementation plans (not tracked)
docs/superpowers/

# Python
__pycache__/
*.pyc
*.egg-info/
.venv/
*.so

# Manuscript (benchmark workflow, figures, drafts)
manuscript/

# Pixi
.pixi/

# Claude
.claude/

# Generated HGVS spec-normalization fixture (regenerated by the
# `generate_spec_fixture` example; see CLAUDE.md). Tracking it made every
# parser PR a conflict magnet, so it is produced on demand instead.
/tests/fixtures/grammar/hgvs_spec_normalization.json
/tests/fixtures/grammar/.hgvs_spec_normalization.*.tmp
/tests/fixtures/grammar/hgvs_spec_enumeration.json
/tests/fixtures/grammar/.hgvs_spec_enumeration.*.tmp
# Generator-revision stamps written beside on-demand fixtures (see
# tests/it/common/fixture_gen.rs); derived, never committed.
/tests/fixtures/grammar/*.genrev

# Generated cis-allele confluence corpus (regenerated by the
# `generate_cis_confluence_corpus` example; see `tests/it/cis_confluence_axis.rs`).
# Derived entirely from the generator's parameters, so committing it would be
# committing a build artifact — and a multi-megabyte one.
/tests/fixtures/cis/cis_confluence_corpus.json
/tests/fixtures/cis/.cis_confluence_corpus.*.tmp
/tests/fixtures/cis/cis_confluence_nr_corpus.json
/tests/fixtures/cis/.cis_confluence_nr_corpus.*.tmp
# Generator-revision stamps (see tests/it/common/fixture_gen.rs).
/tests/fixtures/cis/*.genrev

# The four large HGVS corpora, fetched from the `test-fixtures-v1` release by
# `scripts/fetch-test-fixtures.sh` and verified against
# `tests/fixtures/CHECKSUMS.sha256`. They were Git LFS objects until the metered
# LFS bandwidth (156 MB x 10 CI jobs x ~192 runs/day) exhausted the account's
# budget and reddened every `lfs: true` job at checkout. Ignored so a local fetch
# does not show as a dirty tree — and so 156 MB of binaries cannot be committed
# by accident.
/tests/fixtures/bulk/clinvar_hgvs_500k.json.gz
/tests/fixtures/bulk/clinvar_hgvs_unique.json.gz
/tests/fixtures/validation/cmrg_genes_exhaustive.json.gz
/tests/fixtures/validation/paraphase_genes_exhaustive.json.gz
# Partial downloads from an interrupted fetch.
/tests/fixtures/bulk/*.download.*
/tests/fixtures/validation/*.download.*

# The full ClinVar source file (~461 MB), downloaded on demand when regenerating
# the corpora above. Never committed, never an LFS object.
/tests/fixtures/bulk/hgvs4variation.txt.gz

# Generated reference caches (cdot rkyv, TranscriptDb)
*.tdb
*.rkyv

# Local, untracked third-party corpus checkouts (e.g. the full hgvs-rs
# projection corpus consumed by scripts/refresh-hgvs-rs-projection-fixtures.py).
# Only the curated tests/fixtures/hgvs-rs-projection/cases.json is committed;
# the bulk corpus must never be added to git.
/vendor/

# Local scratch working directory (ad hoc scripts, offline tooling)
/scratch/

# mdBook build output
docs/book/
