Disclose an unsettled post-gesture surface on selector-targeted interactions
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 65/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- mobile-dev, testing
Research direction
Start by reading src/commands/interaction/runtime/resolution.ts around lines 733-752 where captureSnapshot is called. Understand how selector-targeted interactions like click and press resolve. Then examine src/daemon/deferred-interaction-outcome.ts to see how SnapshotState.unsettledGesture is set, and src/daemon/capture-disclosure.ts to see how selector reads disclose this fact. The goal is to modify the resolution logic to also disclose unsettledGesture when a target is missing from a tree with that fact, matching the behavior of selector reads.
Written by the indexing model from the issue text.
Description
Problem
#2839 makes a post-gesture capture that never settled carry unsettledGesture, and discloses it on selector reads (is, get, find, wait) and snapshot. Selector-targeted interactions do not disclose it yet. click, press, fill, and similar commands resolve their target through src/commands/interaction/runtime/resolution.ts (the captureSnapshot call near lines 733-752). After a scroll whose surface is still moving, a target missing from that tree fails as a plain not-found. The agent cannot tell this apart from a real absence.
Expected
An interaction whose selector resolution misses on a tree with unsettledGesture carries the same typed unsettledGesture fact and warning as the selector reads. It must be keyed on the tree fact and must not match on message text.
Notes
- The fact is stamped on
SnapshotState.unsettledGesturebycapturePostGestureStabilizedResult(src/daemon/deferred-interaction-outcome.ts). - The selector reads disclose it through
withCaptureDisclosures(src/daemon/capture-disclosure.ts). - Follow-up to #2839.
- Dominant language
- TypeScript
- Stars
- 4.7k
- Forks
- 304
- Avg merge
- 11h 46m
- Merged PRs (30d)
- 496
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from callstack/agent-device
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
callstack/agent-device#2842 ·
-
docs(ios-runner): RUNNER_PROTOCOL.md points at the wrong file and omits recovery and busy codes Opendocumentation good first issue ready-for-agent
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
callstack/agent-device#2797 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
callstack/agent-device#1869 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 55/100
callstack/agent-device#2856 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
callstack/agent-device#2833 ·
All issues in callstack/agent-device
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
mksglu/context-mode#1200 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
anthropics/claude-code#96687 ·
-
good first issue
Difficulty 1/5 Under an hour Newbie friendliness 95/100
AOSSIE-Org/DebateAI#582 · 2 comments ·