# CLAUDE.md — recordingtest ## 세션 시작 (필수) 1. [PROGRESS.md](PROGRESS.md) 읽기 — 완료/진행 중/차단 현황 2. [PLAN.md](PLAN.md) 읽기 — 다음 할 일 우선순위 큐 3. 작업 선택 → PROGRESS.md "In progress" 표시 4. 완료 시: PROGRESS.md Done 이동 + PLAN.md 갱신 + `docs/history/YYYY-MM-DD_{작업명}.md` 작성 (소요시간·Context 사용량 필수, 누락 시 커밋 차단) ## 작업 사이클 — Planner / Generator / Evaluator 비자명한 작업은 반드시 3단계: 1. `/contract ` → `docs/contracts/.md` (Goal, DoD, Interfaces, Risks) 2. Generator — DoD만 충족, 스코프 이탈 금지 3. `/evaluate ` → `docs/contracts/.evaluation.md` — **pass여야만** PROGRESS.md Done 이동 **Generator와 Evaluator는 같은 세션이 겸하지 않는다.** 컨텍스트가 차면 요약 말고 **파일에 상태를 쏟고 새 세션으로 리셋**. ## 프로젝트 **recordingtest** — WPF 3D 편집기(EG-BIM Modeler, HmEG 엔진, MEF 플러그인)에 대한 입력 회귀 테스트 자동화 도구. 전략: 입력 레코딩 → 리플레이 → 결과물을 `*.approved.*` 베이스라인과 diff (ApprovalTests 패턴). ## 코드 계층 (의무) 3개 계층, 단방향 의존: ``` App-specific (Sut/EgBim/) → HmEG-aware (Hmeg/) → Generic (src/ 직속) ``` | 계층 | 참조 가능 | 위치 | 네임스페이스 | |---|---|---|---| | Generic | .NET BCL, FlaUI, Win32, YAML만 | `src/` | `Recordingtest.*` | | HmEG-aware | Generic + HmEG.dll만 | `src/Hmeg/` | `Recordingtest.Hmeg.*` | | App-specific | Generic + HmEG-aware + 앱 어셈블리 | `src/Sut//` | `Recordingtest.Sut..*` | 역참조 금지. `Recordingtest.Architecture.Tests` 가 의존 그래프를 자동 검증한다. 계층 이동·신규 SUT 추가 시 `/contract` 필수. 폴더 레이아웃: [docs/architecture.md](docs/architecture.md) ## 설계 규칙 - **고정 sleep 금지** — UIA 이벤트/property change 대기 - **좌표만 저장 금지** — UIA element path + 상대 offset 필수 기록 - **새 필드 추가 시 정규화 규칙 동시 등록** - **SUT in-process 코드는 WPF UI thread에서 실행** - 베이스라인 명명: `*.approved.*` / `*.received.*` - 실패 아티팩트: 스크린샷 + UIA 트리 + sidecar JSON + diff를 한 폴더에 ## 저장소 - Origin: https://gitea.hmac.kr/kimminsung/recordingtest (이슈 트래커 동일) - 커밋·PR에 이슈 번호(#N) 참조 - 기술 결정 근거: `docs/history/` + Claude 메모리