Doc: correct frame-timing tooling — gfxinfo unusable (SurfaceView), use in-app frame deltas

This commit is contained in:
Greg Pomerantz 2026-08-16 13:31:10 -04:00
parent d3d11b5d20
commit 5271092c21

View File

@ -55,7 +55,8 @@ swipe/autocorrect sign-off (the emulator's AOSP/Gboard keyboard is a proxy).
4. **No headless test window** in v0.9 or v0.10 — widget-level Go tests are
impossible; on-device e2e is required (§9).
5. **The dev agent has no vision** (verified) — the emulator debug loop is
data-based (state dumps, logcat, gfxinfo, PIL/OCR), not screenshot-judgment
data-based (state dumps, logcat, in-app frame-delta logs, PIL/OCR), not
screenshot-judgment
(§9.3).
## 3. Current state of the live repo (post housekeeping, 2026-08-16)
@ -301,14 +302,20 @@ logging PASS/FAIL to a file the host `adb pull`s and asserts.
Gio renders into one GL surface, so Android's view hierarchy exposes nothing about
our UI. The debug loop is data-based — *more* precise than pixels for this codebase.
Vision is now enabled and verified in-session (screenshots can be read), but it is
only an **auxiliary** check: state dumps, logcat, gfxinfo, and file diffs remain
the authoritative correctness signals.
only an **auxiliary** check: state dumps, logcat, in-app frame-delta logs, and
file diffs remain the authoritative correctness signals.
1. **State-dump debug flag** (add in Phase 1): debug builds write `app.State`
(browser entries, editor text length, cursor px, scroll, dirty, row geometry)
as JSON to the app data dir on a magic tap or 2 s interval; host `adb pull`s
and asserts. Primary "eyes."
2. **logcat** — Go panics + our logs.
3. **`dumpsys gfxinfo <pkg>`** — per-frame timing/jank for the 60 fps claims.
3. **Frame timing for the 60 fps claims — `dumpsys gfxinfo` DOES NOT WORK
here (verified 2026-08-16): it reported 0 frames while the app was visibly
rendering, because Pad draws into a `SurfaceView` and gfxinfo only measures
the View-layer pipeline. Use temporary in-app instrumentation instead:
timestamp each frame in the main loop, log deltas, report p50/p90/p99/max.
`screenrecord` is a human artifact, not an agent metric (it captures ~22
fps with encoder-confounded timestamps).
4. **Screenshot → PIL color histogram / tesseract OCR** — coarse on-screen checks.
5. **File diffs** via `adb pull` — autosave/restore correctness.
6. **Driving**`input tap/swipe/keyevent/text`, `am start/force-stop`,