__pycache__/
*.pyc
.venv/
build/
dist/
*.egg-info/
*.egg
.zcode/

# ВСЕ изменяемые данные проекта живут в data/ (конфиг, БД, сессия, логи, дампы
# probe) — одна строка вместо шести точечных правил (#133). Версионируемый
# шаблон формата конфига лежит отдельно в config/config.example.yaml и НЕ
# игнорируется. Новый изменяемый артефакт кладите в data/ — правку .gitignore
# он не требует.
data/
# Defence-in-depth: session-секреты hh.ru (cookies/localStorage) игнорируются в
# ЛЮБОЙ директории, не только в data/. Catch-all покрывает legacy user-конфиги,
# где storage_state_file при relative-to-config резолве уезжает за пределы data/
# (напр. старый config/config.yaml со значением 'data/...' → config/data/...).
# *.bak*/*.tmp покрывают промежуточные файлы import-cookies (#166):
# write_storage_state кладёт бэкап предыдущей сессии рядом с
# storage_state_file (тот же секрет hhtoken под другим именем) и пишет новую
# сессию через temp-файл + os.replace() (atomic write); оба содержат то же
# секретное значение, что и storage_state_file, но не покрыты правилом выше.
**/storage_state/*.json
**/storage_state/*.json.bak*
**/storage_state/*.json.tmp

.env

# Локальный lock-файл uv; зависимости проекта фиксируются в pyproject.toml.
/uv.lock

# Ad-hoc SQL-запросы для рыночного анализа (scripts/queries/) — разовые
# аналитические артефакты, не код; версионировать не нужно.
scripts/queries/

# Автогенерируемое evidence-описание селекторов; воспроизводится healthcheck-ом.
selectors/live-evidence.json
