Skip to content

PR #416

PR #416 #1322

Triggered via dynamic May 19, 2026 00:37
Status Success
Total duration 1m 18s
Artifacts

codeql

on: dynamic
Matrix: analyze
Fit to window
Zoom out
Zoom in

Annotations

6 warnings
type-text success snapshot contract silently removed: src/snapshot-tests/suites/ui-automation-suite.ts#L228
The `type-text--success` fixture has been dropped and replaced with only error-path fixtures (`type-text--error-not-actionable`), removing end-to-end snapshot validation of the `type-text` success contract entirely. Per the skill guardrails, snapshot removals are contract changes that require explicit review.
Non-parse snapshot capture failures reported as `ACTION_FAILED` despite action succeeding: src/mcp/tools/ui-automation/shared/post-action-snapshot.ts#L53
When `executeAxeCommand` or related infrastructure throws (but the UI action itself already completed), the `uiError.code` is set to `'ACTION_FAILED'`, contradicting the `warning` message which says "UI action succeeded". Agents or callers that branch on `uiError.code === 'ACTION_FAILED'` will incorrectly conclude the action itself failed and may retry it, causing duplicate taps, swipes, or text input.
`/statictext|text/` substring match shadows the `menu` role check: src/mcp/tools/ui-automation/shared/runtime-snapshot.ts#L119
Any element whose joined role text contains `"text"` as a substring — including iOS `role_description` values like `"context menu item"` ("con**text** menu item") — is classified as `'text'` at line 119 before the `/menu/` check at line 127 is ever reached, producing wrong role assignment and incorrect action hints.
[ZKQ-EYK] `/statictext|text/` substring match shadows the `menu` role check (additional location): src/mcp/tools/ui-automation/shared/runtime-snapshot.ts#L113
Any element whose joined role text contains `"text"` as a substring — including iOS `role_description` values like `"context menu item"` ("con**text** menu item") — is classified as `'text'` at line 119 before the `/menu/` check at line 127 is ever reached, producing wrong role assignment and incorrect action hints.
Error code `ACTION_FAILED` contradicts the message that the action succeeded: src/mcp/tools/ui-automation/shared/post-action-snapshot.ts#L56
When snapshot capture fails (not a parse failure), `uiError.code` is set to `'ACTION_FAILED'`, but the message explicitly says "UI action succeeded" — an agent keying off the error code may incorrectly retry the action instead of refreshing with `snapshot_ui`.
resolveElementRef duplicates the missing/expired lookup logic already in getRuntimeSnapshotLookup: src/mcp/tools/ui-automation/shared/snapshot-ui-state.ts#L87
Delegate to `getRuntimeSnapshotLookup` to eliminate the duplicated Map access, null guard, expiry check, and `runtimeSnapshots.delete` call — both paths must be kept in sync by hand otherwise.