Files
recordingtest/docs/contracts/smoke3-gap-fix.evaluation.md
minsung 4ba5b3d74b Orchestrate smoke 3 fix evaluation + close #13
- Gap E/F/G evaluated: pass with caveat (G honest partial)
- 94/94 tests, Anthropic API 529 mid-session recovery demonstrated
- Smoke 3회차 라이브 검증 대기

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:24:18 +09:00

2.6 KiB

smoke3-gap-fix — Evaluation

Verdict: PASS (with documented honest partial on Gap G fallback impl)

Issue #13 / Generator commit b139f2b (+ orchestrator hotkey switch 7db9cd0).

Build & test

Check Result
dotnet build recordingtest.sln 0 warn / 0 err
dotnet test --no-build total 94 pass / 0 fail / 0 skip
Player.Tests 24 pass
Recorder.Tests 26 pass
Normalizer.Tests 16 pass
DiffReporter.Tests 5 pass
EgPlugin.Tests 5 pass
Runner.Tests 6 pass
EngineBridge.Tests 6 pass
EngineBridge.IntegrationTests 6 pass

Per-gap verdict

Gap Code Tests Verdict
E — ParseHotkey extraction ParsedHotkey record + ParseHotkey static in UiaPlayerHost.cs; Hotkey() calls it; named keys (enter/tab/esc/space/back/delete/home/end/pageup/pagedown/arrows/F1-F9) preserved 8 HotkeyParseTests covering enter, tab, single-char, ctrl+c, ctrl+shift+s, f5, alt+f4, empty PASS
F — Focus event SUT-pid filter FocusEventFilter.ShouldAccept (sutPid<=0 → true; candidate<=0 → false; else equality). Program.cs RegisterFocusChangedEvent callback reads el.Properties.ProcessId.ValueOrDefault (try/catch) and gates channel.Writer.TryWrite on ShouldAccept(elPid, sutPid). sutPid captured from app.ProcessId at attach (also in try/catch). 4 FocusEventFilterTests: same pid, different pid, candidate=0, sutPid=0 permissive PASS
G — SUT-scoped point fallback IWindowPointSource (3 methods) + pure WindowPointResolver.Resolve rule (sutPid match/unknown → primary; else SUT-scope fallback; null fallback → primary last resort). FlaUiPointSource in Program.cs uses NativeMethods.WindowFromPoint + GetWindowThreadProcessId, wired into Resolve(RawEvent). GetElementFromSutScope is an honest stub returning null, documented in xmldoc as best-effort pending smoke 3; covered by the "fallback null → primary last resort" test. 5 WindowPointResolverTests: same pid, different pid → fallback, null pid, zero pid, fallback-null-returns-primary PASS (with honest partial)

Other checks

  • Thread.Sleep( in PlayerEngine: 0 (not reintroduced)
  • No writes to EG-BIM Modeler/
  • 77 → 94 (+17) tests claim aligns with actual delta (8+4+5)
  • TreatWarningsAsErrors honored (build succeeded with 0 warnings)

Caveats

  • Gap G live SUT-scope walker is deferred. The pure resolver rule is fully fake-tested and the partial is documented in code (FlaUiPointSource.GetElementFromSutScope xmldoc). Acceptable per evaluator rule §"pass-with-caveat".