__pycache__/
*.py[cod]
*.egg-info/
*.egg
*.whl
dist/
build/
.eggs/
*.so
.pytest_cache/
/wheelhouse/
# editable install metadata
perfxpert.egg-info/

# opencode submodule build artifacts
opencode/node_modules/
opencode/dist/
opencode/.next/
opencode/.turbo/
opencode/target/
opencode/*.log

# Bundled opencode binary — built locally (or on first run) by
# scripts/build-bundled-opencode.sh. NOT committed; wheel build picks it
# up via pyproject `package_data` at sdist/wheel time.
perfxpert/_bundled/opencode
perfxpert/_bundled/opencode.*

# BUT: do NOT ignore .patches/*.patch files
!.patches/*.patch

# Non-deterministic test artifacts (cycle-2 N3):
# These directories hold pytest-generated outputs embedding PID-suffixed
# /tmp/pytest-of-* paths. They are test side-effects, not source of
# truth, and must not be committed (they create spurious `git status`
# noise every time the suite runs).
tests/test_integration/_airgap_snapshots/
tests/test_regression_gate/_runner_outputs/
# Per-run red-team gate outputs (e.g. `sol_gate_unmocked_*.json`).
# The hand-authored baseline fixtures under _attack_outcomes/ stay tracked
# (they are the regression source of truth); only the dynamically
# generated probe outputs are ignored via the pattern below.
tests/test_red_team/_attack_outcomes/sol_gate_unmocked_*.json
