Repository navigation
Description
Part of #1/#69/#71; observed while verifying #114. Preserve the failed observation and investigate separately from the header keyboard toggle.
Observed facts: on the owned Tinycast_Tablet_API_36, physical 1920×1200 /240dpi /100% font, app SHA256 1291d0619b6f70ae90c4d25f759a444fbf32827ffa3ee36233f91006fdf8b2ac (source 411b7f73) and test APK f4925b8c25e900ed336a48f9bfdabd0358bf158818938fd4cdbd47b57b58e1a9, the Emoji callback protocol rejects stale visibility/epoch actions and rejects a Show action while the category menu is visible. After actual UiDevice.pressBack() closes that menu, the focused emoji-search exposes an empty EditableText/range(0,0), while the contract expects face. The menu-before-Back frame is captured; the post-Back text is established by the failure's native semantics dump, not a separate after-image. The launcher case passes. The whole two-case cohort remains failed 1/2, with all15 restoration checks passing. No pre-existing-code attribution or root cause is established.
Acceptance:
- Reproduce the exact sequence with actual before/after PNG/XML and owned query/range data. Compare a simple menu-close protocol and matched historical/current APK controls where applicable; keep all failures and source/binary identities.
- Trace actual BACK DOWN/UP, menu ownership/visibility, window/focus and caller query around dispatch and Android BackHandler delivery. Distinguish facts from inference; investigate possible multiple handling without assuming it.
- One Back closes one active menu layer and preserves the caller's query/range. Define IME-shown behavior explicitly and preserve normal Escape/keyboard/menu navigation, touch backdrop dismissal and route return.
- Retain the failed system-Back outcome. A passing Escape, backdrop, menu-choice or controlled-dispatch protocol earns no Back repair or cause credit.
- Verify relevant wide/short-landscape profiles at100%/200%, modern regression and legacy scope where supported, with guarded app/APK/settings restoration.
- Publish real commit-pinned evidence, actual local/hosted checks and two independent gpt-6.1-sol/high full-change audits; expected-head merge only. Broader Resolve API26 keyboard, IME and caller-selection compatibility failures #69/Make palette controls readable and reliable for touch and large fonts #71, OEM/TalkBack and signing limits remain open.
Activity
moikdev commentedon Nov 5, 2026
A new isolated probe now reproduces query loss on both the archived pre-toggle app
66a6965e…c524c(source6c5825bf) and the current frozen app98da1466…aa5de3(sourcef30bebd6), using the same final test APKdc22049a…ccdf3d/ fixture source69bd578d, owned API36 tablet1920×1200 /240dpi /100%.The probe never activates a header keyboard control. It sets the owned
facequery, hides the IME as controlled setup, increments the search epoch, opens the category menu by actual pointer and callsUiDevice.pressBack(). Both positive-only runner receipts fail the exact-query assertion (0/1 each), retain before/menu/after PNG/XML/frame sets, and record query"", routeemojiand IME hidden afterward. All30 restoration checks pass. This reproduces the query-loss pattern on historical code; it establishes no key-delivery cause or repair.UiDevice.pressBack()returned false in both observations. The raw field namedinjection_acceptedstores that method return only; it must not be interpreted as evidence that no Back input was delivered. Actual DOWN/UP and dispatcher tracing remain required. The #114 pointer-backdrop protocol supplies no system-Back repair credit; this issue stays open.moikdev commentedon Nov 5, 2026
New source-bound diagnosis after #116: the observation-only window callback harness (
8e35be10, test SHA256bf3c9785…7dd2fa) reproduces 0/1 query-loss failures on both archived/current pre-fix APKs, with 30 successful restoration checks. It observes no Back events at the window callback, so it establishes no delivery cause at that boundary.A separate tracing-only app/harness at
1dc1a1ce4460ba1401e6a0e408b8faea68b194c5reproduces the same 0/1 failure with all 15 restoration checks. Its bounded opt-in trace records one matching native DOWN/UP pair: pre-IME DOWN changes menu_open true→false and returns handled=true; the Emoji dispatcher callback then changes query length4→0 with no menu open; the corresponding canceled UP is consumed afterward. Zero trace drops, exact window-observer and property restoration. This establishes the two actions within this captured sequence. The pinned UiAutomator2.3.0 bytecode also confirms that pressBack’s Boolean reports its accessibility-event wait, not key-delivery acceptance.The candidate now delegates the complete KEYCODE_BACK sequence to the existing Back dispatcher instead of dismissing in the menu key handler. The matched repaired run and broader Back/Escape/pointer/IME regression checks are still pending; no repair clearance yet. The original failed receipts remain failed.
Publish final-pair evidence for the phone action sheet