# Python
__pycache__/
*.py[cod]
*.egg-info/
.venv/
venv/
.pytest_cache/
.mypy_cache/
build/
dist/

# Edge runtime artifacts
*.db
*.hef
# Root-anchored on purpose. A bare `snapshots/` matches at EVERY depth, which swallowed
# cloud/storage/snapshots/ — and since git cannot re-include a file whose parent directory
# is excluded, it silently killed cloud/.gitignore's `!/storage/snapshots/.gitkeep`. The
# edge never writes a snapshots directory anyway: they stay in memory and are base64'd into
# the queue db or POSTed (edge/queue.py, edge/alert.py).
/snapshots/
queue.db

# Secrets / local config
.env
*.local

# OS
.DS_Store
Thumbs.db

# Tool caches
.impeccable/

# Pi provisioning (real device secret) — never commit
deploy/device.env

# 생성되는 사용 설명서. 소스는 server/deploy/manual/{manual.json,shots/} 이고,
# 납품 패키저가 빌드할 때마다 다시 만든다. 커밋된 사본을 두면 화면이 바뀐 뒤에도 그것이
# 최신처럼 보이는데, 구 UI 캡처가 남은 매뉴얼은 납품물 자체의 결함이다.
server/deploy/manual/사용설명서.html

# 경영진 보고 덱 — 생성물. 매뉴얼(사용설명서.html)과 같은 이유로 커밋하지 않는다:
# 낡은 사본이 최신인 척하는 것이 가장 위험하다. build_deck.py 로 다시 뽑을 것.
docs/deck/경영진-보고.html
# 3초 클립은 바이너리다. 저장소가 아니라 발표 노트북에 둔다.
docs/deck/clips/*
!docs/deck/clips/.gitkeep

# 프로비저닝 자격증명 — 납품 폴더(dist/) 밖에 둔다.
# dist/ 안에 있으면 폴더째 압축할 때 같이 나간다.
/secrets/
