recorder PoC (element-aware 입력 캡처) #6

Closed
opened 2026-04-07 14:23:33 +09:00 by kimminsung · 2 comments
Owner

목표

Sprint Contract docs/contracts/recorder.md DoD 충족.

범위

  • Recordingtest.Recorder 콘솔 — SUT attach, Win32 low-level hook + UIA element path 캡처
  • 시나리오 yaml 출력 (scenario-author 스키마 일치)
  • PasswordBox 마스킹, 3D 뷰포트 normalized offset
  • FlaUI (UIA3) 사용 승인

사이클

  1. Generator 세션
  2. Evaluator 세션 → /evaluate recorder

Related: #2

## 목표 Sprint Contract `docs/contracts/recorder.md` DoD 충족. ## 범위 - `Recordingtest.Recorder` 콘솔 — SUT attach, Win32 low-level hook + UIA element path 캡처 - 시나리오 yaml 출력 (scenario-author 스키마 일치) - PasswordBox 마스킹, 3D 뷰포트 normalized offset - FlaUI (UIA3) 사용 승인 ## 사이클 1. Generator 세션 2. Evaluator 세션 → `/evaluate recorder` Related: #2
Author
Owner

recorder PoC — Verdict: pass (v2)

Iteration history

  1. Generator v1 (d486cbb) — FlaUI 4.0.0 + YamlDotNet, 5 pure-logic unit tests.
  2. Evaluator v1fail (3 code gaps): drag collapse 미구현, focus change 미캡처, ts/raw_coord yaml 누락.
  3. Generator v2 (56b7233) — DragCollapser 상태머신, RegisterFocusChangedEvent wiring, Ts/RawCoord 모델 확장. 9/9 tests.
  4. Evaluator v2pass.

Final DoD

# DoD item Score
1 Console attach + hook capture pass (source) / untestable (live)
2 Event kinds (key/click/drag/wheel/focus) pass
3 Event shape {ts, kind, uia_path, offset_norm, raw_coord, value} pass
4 offset_norm [0..1] pass
5 Yaml schema snake_case conformance pass
6 PasswordBox 마스킹 pass
7 60 FPS perf untestable (deferred)
8 Exit summary pass

Follow-ups (non-blocking)

  • 라이브 SUT smoke test 필요 (DoD #1/#7는 real workstation에서만 검증 가능)
  • IME 조합 키 처리

closing.

## recorder PoC — Verdict: **pass** (v2) ✅ ### Iteration history 1. **Generator v1** (`d486cbb`) — FlaUI 4.0.0 + YamlDotNet, 5 pure-logic unit tests. 2. **Evaluator v1** → **fail** (3 code gaps): drag collapse 미구현, focus change 미캡처, `ts`/`raw_coord` yaml 누락. 3. **Generator v2** (`56b7233`) — `DragCollapser` 상태머신, `RegisterFocusChangedEvent` wiring, `Ts`/`RawCoord` 모델 확장. 9/9 tests. 4. **Evaluator v2** → **pass**. ### Final DoD | # | DoD item | Score | |---|----------|-------| | 1 | Console attach + hook capture | pass (source) / untestable (live) | | 2 | Event kinds (key/click/drag/wheel/focus) | pass | | 3 | Event shape `{ts, kind, uia_path, offset_norm, raw_coord, value}` | pass | | 4 | offset_norm `[0..1]` | pass | | 5 | Yaml schema snake_case conformance | pass | | 6 | PasswordBox 마스킹 | pass | | 7 | 60 FPS perf | untestable (deferred) | | 8 | Exit summary | pass | ### Follow-ups (non-blocking) - **라이브 SUT smoke test** 필요 (DoD #1/#7는 real workstation에서만 검증 가능) - IME 조합 키 처리 closing.
Author
Owner

비용 (retroactive)

단계 Tokens
Generator v1 (recorder) ~51k
Evaluator v1 ~36k
Generator v2 (drag/focus/ts fix) ~44k
Evaluator v2 ~38k
Orchestrator 분담 ~25k
합계 ~194k

재작업 1회로 토큰 증가.

### 비용 (retroactive) | 단계 | Tokens | |------|--------| | Generator v1 (recorder) | ~51k | | Evaluator v1 | ~36k | | Generator v2 (drag/focus/ts fix) | ~44k | | Evaluator v2 | ~38k | | Orchestrator 분담 | ~25k | | **합계** | **~194k** | 재작업 1회로 토큰 증가.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kimminsung/recordingtest#6