- 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>
40 lines
2.6 KiB
Markdown
40 lines
2.6 KiB
Markdown
# 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".
|