docs: record the wedged-app failure mode and point Phase 7 at it

This commit is contained in:
2026-10-16 14:39:41 +11:00
parent c178f92851
commit 40a8a51c9e
2 changed files with 34 additions and 1 deletions

View File

@@ -148,7 +148,10 @@ Open maps and search a place.
*DoD:* the Hub calls `/act` and the phone responds. *DoD:* the Hub calls `/act` and the phone responds.
**Phase 7 — Resilience** **Phase 7 — Resilience**
Wake the screen, reconnect after a drop, fail cleanly on a missing element. Wake the screen, reconnect after a drop, fail cleanly on a missing element, and
handle an app that stops consuming input (a memory-starved phone can deliver a
tap that the app never acts on — see `docs/phase-3-spotify-recipe.md`, attempts
9, 10 and 13).
*DoD:* a dropped ADB session recovers without a restart. *DoD:* a dropped ADB session recovers without a restart.
**Phase 8 — Documentation** **Phase 8 — Documentation**

View File

@@ -345,6 +345,36 @@ Artemis made this worse than it needed to be: `uiautomator dump` starts a JVM on
the phone, and the wait helpers were polling every 400ms. `ui.PollInterval` is the phone, and the wait helpers were polling every 400ms. `ui.PollInterval` is
now 1500ms, which cuts that load by roughly two thirds. now 1500ms, which cuts that load by roughly two thirds.
13. **A second query met the wedged app again.** Straight after the successful
run, `spotify_play query="Beatles Hey Jude"` failed at the clear-the-search-box
step: the app never acted on the tap, and a 90-second rest did not clear it.
Not a recipe fault — the same wedge as attempts 9 and 10, and this time the
evidence is complete:
```
$ adb shell input motionevent DOWN 993 186
$ adb shell dumpsys input | sed -n '/Input Dispatcher State/,/Input Reader State/p'
TouchStatesByDisplay:
LogicalDisplayId 0:
TouchedWindows:
0: name='44f7f5b com.spotify.music/com.spotify.music.MainActivity',
targetFlags=FOREGROUND | SPLIT ... FINGER
$ adb shell dumpsys activity lastanr | tail -2
<no ANR has occurred since boot>
$ adb shell ps -A -o PID,NAME,%CPU | grep spotify
11987 com.spotify.music 41.5
$ adb shell grep -E 'MemFree|SwapFree' /proc/meminfo
MemFree: 253508 kB
SwapFree: 338264 kB
```
The touch reaches Spotify's window; the app does not consume it; Android has
not declared an ANR; the phone has 250MB free and has used 3.5GB of its 3.9GB
swap. The first run of the heartbeat, from a quieter phone, completed in 35
seconds. This is the phone's resource state, not the recipe, and detecting
"the app has stopped taking input" belongs to Phase 7 (resilience).
### Reproducing it ### Reproducing it
```sh ```sh