Skip to content

Commit df4ecc3

Browse files
strzhaoclaude
andcommitted
docs(evidence): record a densified pan dragging a real slider to a 3px pass
Co-Authored-By: Claude Code <[email protected]>
1 parent 59a2bb5 commit df4ecc3

1 file changed

Lines changed: 62 additions & 0 deletions

File tree

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# HarmonyOS densified trajectory pan drags a real slider, 2026-11-08
2+
3+
Evidence for #4239 (inject gesture pan as a densified touch-panel
4+
trajectory): one densified pan through the panel evdev chain dragged a real
5+
slider-captcha knob 439 px across its track, and the app's own
6+
machine-readable oracle scored the alignment at 3 px off target — inside its
7+
20 px tolerance, `RESULT=PASS`.
8+
9+
## Device
10+
11+
- HUAWEI 畅享 90 Plus, model `JDY-AL50`, HarmonyOS 7.0.0.111 (SP10C00E111R4P3), API 26
12+
- Serial `77TYD26826028730`, USB, `hdc shell` as uid 2000 (shell)
13+
- Surface: `com.stringzhao.captchaab`, its slider-puzzle page — a test harness
14+
app whose status bar carries a machine-readable verdict row
15+
(`ROUND=... RESULT=... DETAIL=... TYPE=slider`), so the oracle needs no
16+
screenshots.
17+
18+
## Run
19+
20+
Knob at the track's left edge (x≈165, y≈1084); the puzzle gap sat 439 px to
21+
the right. One densified pan, default transport (the panel node):
22+
23+
```sh
24+
$ node bin/agent-device.mjs gesture pan 165 1084 439 0 900 \
25+
--platform harmonyos --serial 77TYD26826028730
26+
Panned (165, 1084) by (439, 0)
27+
```
28+
29+
The verdict row before and after:
30+
31+
```
32+
ROUND=1 RESULT=NONE DETAIL=- PASS=0 FAIL=0 TYPE=slider
33+
ROUND=1 RESULT=PASS DETAIL=offset=3px tol=20 PASS=1 FAIL=0 TYPE=slider
34+
```
35+
36+
The after screenshot shows the knob at ≈x 606 on the track and the puzzle
37+
piece seated in the gap. The requested displacement (165 + 439 = 604) and the
38+
scored landing (offset 3 px inside a 20 px tolerance) agree.
39+
40+
## Why this evidences the transport
41+
42+
The slider only moves while a touch sequence holds, carries, and releases it —
43+
a straight-line UIInput swipe also moves it, but this branch's pan lowers the
44+
stroke as a densified sample chain through the panel's input node with a
45+
success sentinel (a denied or failed panel write can never report a completed
46+
gesture; a reboot-renumbered node re-probes). The pass at 3 px shows the
47+
sample chain held the drag across its whole length on hardware.
48+
49+
## Reproduce
50+
51+
Open the app to its slider page, read the machine row, run the pan, read the
52+
row again:
53+
54+
```sh
55+
hdc -t 77TYD26826028730 shell "aa start -b com.stringzhao.captchaab -a EntryAbility"
56+
node bin/agent-device.mjs press @e11 --platform harmonyos --serial 77TYD26826028730
57+
node bin/agent-device.mjs gesture pan 165 1084 439 0 900 --platform harmonyos --serial 77TYD26826028730
58+
node bin/agent-device.mjs snapshot --platform harmonyos --serial 77TYD26826028730 | grep 'ROUND='
59+
```
60+
61+
The knob start position and the gap move per round; read both from a
62+
screenshot before the drag.

0 commit comments

Comments
 (0)