Orchestrate smoke 2차 gap fix evaluation + close #12
- 4 gaps (player resolver, type target, window filter, UTF-8 BOM-less) all pass - 71/71 tests, regression traps verified - Ready for smoke 2회차 live validation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
9
docs/history/2026-04-07_readme-작성.md
Normal file
9
docs/history/2026-04-07_readme-작성.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# README 작성 및 push
|
||||
|
||||
- 일시: 2026-04-07
|
||||
- 소요 시간: ~3분
|
||||
- Context 사용량: ~5%
|
||||
|
||||
## 변경
|
||||
- `README.md`를 한 줄 placeholder에서 프로젝트 개요(전략/모듈표/사이클/스택/디렉터리)로 확장
|
||||
- commit `3738a0d`, push to origin/main
|
||||
32
docs/history/2026-04-07_이슈12-smoke2-fix-evaluator.md
Normal file
32
docs/history/2026-04-07_이슈12-smoke2-fix-evaluator.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# 이슈 #12 — smoke 2차 gap fix evaluator
|
||||
|
||||
- 일자: 2026-04-07
|
||||
- 역할: Evaluator (독립 세션)
|
||||
- 관련 이슈: #12
|
||||
- 평가 대상 커밋: `8784fec`
|
||||
- 결과: **PASS**
|
||||
|
||||
## 소요 시간
|
||||
약 6분
|
||||
|
||||
## Context 사용량
|
||||
약 55k tokens (Opus 4.6 [1m])
|
||||
|
||||
## 수행 내역
|
||||
1. `dotnet build recordingtest.sln` → 0 warn / 0 err
|
||||
2. `dotnet test recordingtest.sln --no-build` → 71 pass / 0 fail / 0 skip
|
||||
3. Gap A: `UiaPathParser.cs`, `IUiaPathResolver.cs`, `UiaPlayerHost.cs` 직접 read — 분리된 파서/리졸버, FlaUI 어댑터, null-on-miss 확인
|
||||
4. Gap B: `DragCollapser.cs` — `lastFocusPath`/`lastMousePath` 상태 + `FlushType` fallback 체인 확인
|
||||
5. Gap C: `WindowFilter.cs`, `LowLevelHook.cs`, `Program.cs` — `SutProcessWindowFilter` 구현 + 마우스/키 분리 + Program 와이어링 확인
|
||||
6. Gap D: `ScenarioWriter.cs` — 명시적 `UTF8Encoding(false)` 확인; 라운드트립 테스트의 BOM 바이트 단언 확인
|
||||
7. `PlayerEngine.cs` `Thread.Sleep` grep → 0
|
||||
8. `git diff HEAD~1 HEAD -- tests/...RecorderTests.cs` 로 신규 테스트 5개 모두 load-bearing 확인
|
||||
9. `docs/contracts/smoke2-gap-fix.md` 부재 확인 — issue body 운영, evaluation 파일에 명시
|
||||
|
||||
## 산출물
|
||||
- `docs/contracts/smoke2-gap-fix.evaluation.md` (verdict + 회귀 트랩 표)
|
||||
- 본 히스토리 파일
|
||||
|
||||
## 비고
|
||||
- Sprint Contract 파일이 없는 follow-up 흐름이지만 4개 gap이 issue body에 명확히 정의되어 있어 평가 가능했음.
|
||||
- PROGRESS.md / 코드 수정은 evaluator scope 밖이라 손대지 않음.
|
||||
33
docs/history/2026-04-07_이슈12-smoke2-fix-orchestration.md
Normal file
33
docs/history/2026-04-07_이슈12-smoke2-fix-orchestration.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# 2026-04-07 이슈 #12 — Smoke 2차 gap fix 오케스트레이션
|
||||
|
||||
- **이슈**: #12 (smoke 1회차 후속 4-gap fix)
|
||||
- **소요 시간**: ~15분 (Generator ~6분 + Evaluator ~2분 + orchestrator 마무리)
|
||||
- **Context 사용량**: ~400k tokens (orchestrator 누적)
|
||||
|
||||
## 사이클
|
||||
|
||||
1. Smoke 1회차 발견 4-gap 이슈화 (#12 open)
|
||||
2. Generator 백그라운드 → commit `8784fec` (60 → 71 tests)
|
||||
3. Evaluator 백그라운드 → **pass** (4/4 gap pass + regression trap 검증)
|
||||
4. PROGRESS 갱신, 이슈 close, commit + push
|
||||
|
||||
## 수정 요약
|
||||
|
||||
- **Gap A**: `UiaPathParser` + `UiaPathResolver` + `IUiaTreeNode` 새 추상화. 기존 last-AutomationId 휴리스틱 제거. ancestor chain 따라 descend하며 id→name→class 우선.
|
||||
- **Gap B**: `DragCollapser`에 `lastFocusPath`/`lastMousePath` 추가. `FlushType` fallback chain 적용.
|
||||
- **Gap C**: `SutProcessWindowFilter` + P/Invoke `WindowFromPoint`/`GetForegroundWindow`. `Program.cs`가 attached pid로 wire.
|
||||
- **Gap D**: `ScenarioWriter`가 UTF-8 BOM-less 명시. 한글 round-trip 테스트 + BOM 부재 assertion.
|
||||
|
||||
## 비용
|
||||
|
||||
Generator ~92k + Evaluator ~58k + Orchestrator ~15k = **~165k**
|
||||
|
||||
## 다음 단계
|
||||
|
||||
**Smoke 2회차** — 실제 EG-BIM Modeler에서 짧은 Box 시나리오 재검증. 기대:
|
||||
- click이 정확한 element 잡음
|
||||
- type "BOX"/"10" 실제로 입력됨
|
||||
- SUT 외 이벤트 필터됨
|
||||
- Box가 화면에 실제로 그려짐
|
||||
|
||||
사용자 라이브 환경 필요.
|
||||
Reference in New Issue
Block a user