# Python
__pycache__/
*.py[cod]
*.egg-info/
.pytest_cache/

# 虚拟环境（本地生成，勿入库）
venv/
.venv/
env/

# 固件 / 日志产物（本目录只做前端与本地服务，固件由 ESP32_COMM 构建）
*.bin
*.elf
*.map
*.log

# 采样 / 自测产物（现场跑出来的原始数据，动辄几十 MB，勿入库）
*.csv
*.jsonl
scripts/_*_out.txt

# 一次性排障探针（跟着某次现场问题写的，问题闭环后即失效）
scripts/probe_*.py
scripts/selftest_*.py

# 本地一次性排障产物（页面测试驱动 / 诊断脚本 / 截图 / 测试报告），不入库
/_local/
# 例外：这两个已入库，是可复用的通用采样器
!scripts/probe_ecat_slot_atomicity.py
!scripts/probe_ecat_vs_wifi.py

# 电机页配置落盘（本机 UI 状态，每人不同；页面服务自动读写）
/data/motor_ui_state.json
/data/motor_ui_state.json.tmp

# ── 调试/临时脚本与本地采样产物（不入库）──
# _ 前缀：现场排障探针、预览截图、一次性驱动
scripts/_*
# 一次性分析/采样/测量/追踪脚本
# 注：验收链上的脚本一律用 check_ 前缀入库（check_web_send_latency /
#     check_recover_after_reset / check_click_to_motion / check_guard_*），
#     下面这些 e2e_/measure_/capture_ 通配只挡新的一次性草稿
scripts/anal_*.py
scripts/collect_*.py
scripts/capture_*.py
scripts/measure_*.py
scripts/e2e_*.py
scripts/trace_*.py
scripts/flash_gd32_ecat.py
scripts/test_ecat_version_*.py
scripts/test_gd32_restart_version.py
scripts/test_motor_ui_state.*
scripts/test_ver_*.py

# lab 实验中间产物（图/表/hex/探针输出；已入库的 lab/*.html 保持跟踪）
/lab/cpu_probe/
/lab/skip_meter/
/lab/_flash_*.py
/lab/*.json
/lab/*.svg
/lab/*.hex
/lab/*probe*.txt
/lab/*summary*.json
/lab/*_report.json
/lab/*_hist.json

# 运行时页面状态、桥接采样、本机 dump
/data/
*.jsonl
/logs*.json
/st*.json

# 编辑器 / 系统
.vscode/
.idea/
*.swp
Thumbs.db
desktop.ini

# 本地现场备份（可用前端快照）与 UI 诊断输出
/_backup/
/output/
