refactor: extract mouse UI pointer target resolution

Merged
HA
3mo ago
+687-286

Summary

  • extract pointer data construction, hierarchy/path lookup, drop validation, and direct raycast construction into MouseUiPointerTargetResolver
  • move the executor-consumed resolution result into the top-level ResolvedPointerTargets DTO
  • add synchronous EditMode characterization coverage for path, drop, bypass hierarchy, pointer state, and no-hit behavior
  • reduce SimulateMouseUiUseCase from 1,305 to 1,032 lines

Scope Notes

  • The characterization commit advances five resolver methods and ResolvedPointerTargets from private to their required final internal visibility. The final implementation retains the existing signatures and nullability.
  • The only non-move behavior-preserving adaptation removes the one-line RaycastUI wrapper. Its resolver and executor callers now invoke UiRaycastHelper.RaycastUI directly, matching the existing drag-finalization caller.
  • The two existing out-parameter contracts remain byte-equivalent for move-only review. Their conversion to an explicit result DTO is recorded separately as R2-41.
  • Event dispatch, drag execution/finalization, overlay and main-thread cleanup, logging, and action execution remain with later R2-33 stages.
  • IPC request/response DTOs and wire shapes are unchanged, so no protocol version bump is required.

Verification

  • dist/darwin-arm64/uloop compile (0 errors, 0 warnings)
  • EditMode MouseUiPointerTargetResolverTests before and after the move (10 passed)
  • PlayMode SimulateMouseUiTests (32 passed)
  • EditMode MouseUiSimulationResponseFactoryTests (12 passed)
  • EditMode SimulateMouseUiActionValidationTests (1 passed)
  • EditMode PlayModeToolPreflightServiceTests (8 passed)
  • EditMode StaticFacadeStateGuardTests (20 passed)
  • EditMode OnionAssemblyDependencyTests (83 passed)
  • normalized old/new resolver comparison (only the declared RaycastUI direct-call adaptation remains after visibility normalization)
  • old owner definitions, reverse references, and RaycastUI wrapper references (0)
  • git diff --check origin/v3-beta...HEAD