# `state/` — 상태 파일 (런타임 생성, git 미추적) DB 락 없이 가볍게 읽어야 하는 상태만 여기 둔다. 이 파일만 저장소에 남고 나머지는 `.gitignore`로 제외된다. | 경로 | 내용 | |---|---| | `heartbeat.json` | 마지막 성공 실행 시각·run_id·리포트 경로. 워치독(`watchdog.py`)이 이걸로 "배치가 안 돌았다"를 판정한다 | | `alerts.json` | 미해소 알림 미러. 알림 에이전트(`notify/pump.py`)가 SQLite 잠금 없이 여기만 읽는다 | | `run.lock` | 배타 실행 락 파일(`runlock.py`). 중복 실행 방지 | | `proposals/` | AI가 제안한 내용의 보관소. **자동 적용 금지** — 사람 승인 대기 상태로만 쌓인다 | | `tmp/` | 임시 작업 디렉터리(수동 검증·릴리스 산출물 임시 보관 등) | 알림 등급·에스컬레이션 규칙은 `docs/ops/02-failure-alerting.md`가 정본이다.