Skip to content

fix(window): AX 메시징 타임아웃 설정 실패 시 해석 중단#107

Merged
pignuante merged 3 commits into
mainfrom
fix/ax-timeout-abort
Jul 23, 2026
Merged

fix(window): AX 메시징 타임아웃 설정 실패 시 해석 중단#107
pignuante merged 3 commits into
mainfrom
fix/ax-timeout-abort

Conversation

@pignuante

Copy link
Copy Markdown
Contributor

Summary

AXUIElementSetMessagingTimeout 실패를 로그만 남기고 계속 진행하던 것을 즉시 중단으로
바꾼다. 이전 감사(algorithm-improvement-implementation-review-2026-07-23.md)의 LOW 항목이다.

타임아웃 값은 상수 2.0이라 SDK가 실패를 반환하는 경우는 무효 element뿐인데, 그 element로는
이후 AX 읽기·쓰기도 성공할 근거가 없다. 기본 6초 타임아웃으로 계속 진행하면 응답 없는 앱에서
메인 스레드를 더 오래 막을 뿐이다.

  • WindowResolutionErrormessagingTimeoutConfigurationFailed(code:) + userFacingMessage 추가
  • 두 호출부(app·window element)가 실패를 전파
  • per-directory AGENTS.md를 현행화 (이 변경 + 이미 머지된 CommandOutcomePolicy·테스트 분할)

커밋

  1. fix(window): — 타임아웃 중단 코드 + Shared/WindowAccess AGENTS.md
  2. docs(agents): — 이미 머지된 fix(window): AX 결과 커밋 정합성 + 실패 경로 노출 #103/#106을 반영한 나머지 문서

Type

  • fix — bug fix
  • docs

Checklist

  • make lint clean — 0 violations / 49 files
  • make test — 208 checks
  • 격리 DerivedData로 Debug 빌드 BUILD SUCCEEDED
  • 서명 빌드(make run)로 실제 앱 라이브 검증 — 스냅·던지기·최대화·되돌리기·디스플레이 이동 정상
  • .docs/ not staged

Notes / risk

출처: 이 코드 변경은 이번 세션에서 작업 트리에 이미 존재하던 것을(다른 세션/편집으로 추정)
사용자 승인 하에 커밋한 것이다. 라이브 테스트에 포함해 정상 동작을 확인했다.

리뷰어가 볼 곳: 이 변경은 이전 리뷰에서 "도달 불가에 가까워 이득 없다"고 반려됐던 지점이다.
반대 결론으로 구현됐으므로, messagingTimeoutConfigurationFailed가 정상 사용 중 발동하지 않는지
(= 타임아웃 설정 실패가 실제로 무효 element에서만 나는지) 확인이 필요하다. 라이브 44회 조작에서는
한 번도 발동하지 않았다(모든 명령 정상).

setMessagingTimeout 실패를 로그만 남기고 기본 6초 경로로 계속 진행하던 것을, 즉시
해석 중단으로 바꾼다. 타임아웃 값은 상수 2.0이라 SDK가 실패를 반환하는 경우는 무효
element뿐인데, 그 element로는 이후 AX 읽기·쓰기도 성공할 근거가 없다.

WindowResolutionError에 messagingTimeoutConfigurationFailed(code:)를 추가하고
userFacingMessage를 붙였다. 두 호출부(app·window element)가 실패를 전파한다.

Shared·WindowAccess AGENTS.md에 이 동작을 반영했다.
…est split

이미 머지된 변경을 per-directory 문서에 반영한다.
- CommandOutcomePolicy(순수 상태 커밋 정책, #103)를 데이터 흐름과 Commands 목록에 추가
- 테스트 파일이 도메인별 CommandEngineTests*.swift 5개로 분할된 것(#106)을 반영
@pignuante pignuante self-assigned this Jul 23, 2026
이번 세션에서 겪은 두 함정을 남긴다.

- 실행 중인 서명 앱을 건드리지 않고 컴파일 검증하려면 별도 -derivedDataPath로 빌드한다.
  #if DEBUG는 구성별로 다르므로 그 블록을 건드릴 땐 Debug·Release 양쪽을 확인한다.
- squash-merge가 head 브랜치를 지우므로 그 위에 스택된 PR은 머지 시 자동으로 닫히고
  재개설·base 변경이 불가하다 — main 대상으로 재개설한다. 한 PR이 다른 PR이 수정하는
  코드를 옮기면(테스트 파일 분할 등) 내용 변경을 먼저, 이동을 마지막에 머지한다.
@pignuante
pignuante merged commit 70dd7e0 into main Jul 23, 2026
3 checks passed
@pignuante
pignuante deleted the fix/ax-timeout-abort branch July 23, 2026 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant