# 🎯 PROJECT CONTEXT
- **이름**: ExperionCrawler
- **스택**: .NET 8 (C#), PostgreSQL (TimescaleDB), OPC UA
- **아키텍처**: Clean Architecture (`src/Core`, `src/Infrastructure`, `src/Web`)
- **주요 DB**:
  - 도커 컨테이너`iiot-timescaledb` 의  (localhost:5432/iiot_platform 테이블): 시계열 저장, Text-to-SQL

# 📋 MANDATORY WORKFLOW (최우선 준수)
1. **시작 전 상태 파악**: 프로젝트 루트의 `todo.md`를 먼저 읽고 이력/미완료 작업 확인
2. **Todo List 생성**: 복잡도 ≥2 단계인 작업은 반드시 더 작은 단위로  `todo list` 를 만들것
3. 'todo list'를 완료시 까지, 작은 단위 작업 완료시에는 다음 작은 단위 작업은 반드시 새 작업으로 작업할 것
4. **수정전 백업**: 파일을 수정할 시에는 반드시 파일명에 현재 날짜와 시간을 붙여서 /.rooBackup 폴더에 복사후 수정
5. **안전한 파일 수정**: `apply_diff` 사용 전 무조건 `read_file`로 현재 내용 검증. 정확한 검색/교체 블록만 사용
6. **단계 완료 처리**: 각 Todo 항목 완료 시 즉시 `completed` 표시

# 🔄 CONTEXT MANAGEMENT & TASK MIGRATION (핵심 규칙)
## 1. 이관 트리거 (하단 조건 중 하나라도 충족 시 즉시 중단)
- 논리적 모듈/기능 단위 완료
- 자가 평가 기준: 컨텍스트 누적 부하가 약 70% 이상으로 판단될 때

## 이관 실행 프로토콜
- 현재 상태를 압축 요약하고 **반드시 아래 형식으로 응답을 종료**
- 이관 신호 출력 후 추가 코딩/분석/설명 절대 금지.

## 3. 이관 직전 필수 저장 항목
이관 신호 출력 전 반드시:
1. `task_state.md` 최신화 (미완료 파일 목록, 발견된 문제 전체)
2. 다음 작업자(새 컨텍스트)를 위한 첫 문장 명시:
   > "task_state.md를 읽고 [미완료 파일명]부터 이어서 분석하세요"
3. 이관 후 첫 응답에서 task_state.md 확인 없이 작업 시작 금지

# 🧠 LARGE TASK ANTI-CORRUPTION RULES
## 대규모 작업 (파일 5개 이상 분석/수정) 필수 규칙

### 반드시 외부 파일을 진행 상태 저장소로 사용
- 분석/수정 작업 시작 즉시 `task_state.md` 생성
- 각 파일 처리 완료마다 즉시 결과를 `task_state.md`에 기록
- 컨텍스트 압축/이관 발생 시 **첫 번째 행동은 `task_state.md` 읽기**
- 기억(컨텍스트)을 절대 진실 소스로 사용 금지

### task_state.md 형식
```
## 작업명:
## 시작시각:
## 전체 대상: [파일 목록]

### 완료된 파일
- [x] src/Core/xxx.cs → 문제없음
- [x] src/Infrastructure/yyy.cs → HIGH: DB연결 미해제

### 미완료 파일
- [ ] src/Web/zzz.cs

### 발견된 문제 누적
| 파일 | 심각도 | 내용 |
|------|--------|------|
```
# 🚫 COMMAND LOOP PREVENTION
- 명령 실행 후 결과가 이전과 동일하면 → 재시도 금지, 원인 분석 먼저
- --no-build 옵션은 빌드 완료 확인 후에만 사용
- 테스트 0개 실행 시 → 테스트 프로젝트/필터 조건 재확인, 재실행 금지