You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Separate exact native text content from IME decoration in API26 compatibility checks #108
Follow-up slice of #69, after merged #107 separated incompatible-engine recovery from native input behavior.
Current passive probes on the unchanged fec0a4bf app reproduce Android8 composing underlines during navigation/Escape. One large-draft run records exact title characters but unequal AnnotatedString values after an asynchronous IME update. Idle Updates/Note caller-return selections currently remain exact. These observations do not identify every original readiness failure or establish a production fix.
Acceptance criteria:
Preserve passive default-IME observations without creating diagnostic InputConnections; record exact characters/code points, decoration, selection, focus and delivered key pairs.
Compare native editable content by exact UTF-16 characters, with no trimming, normalization or character loss; retain decoration separately when diagnosing composition.
Demonstrate an intended strict-annotation failure and corrected character assertion on a matched app/protocol pair, including unchanged production sources and meaningful wrong-content rejection.
Verify explicitly committed navigation/caret behavior separately from active multilingual composition; preserve current composition guards and avoid language heuristics or forced production commits.
Verify bounded owned large-draft recreation and same-turn activation, and native idle-route caller selection, with exact claims and APK/source identities. Keep unreproduced original live-network/old-image failures open under Resolve API26 keyboard, IME and caller-selection compatibility failures #69.
Use owned API26 and API36 emulator runs with original data/APK/settings restoration, durable real screenshots and declared test/fixture setup.
Record appropriate local checks, actual exact-head hosted Android results and two independent gpt-6.1-sol/high audits before an expected-head merge.
This issue is a test-contract/diagnostic improvement. It does not clear Android8 extension execution, all six original input failures, physical/OEM/accessibility coverage or full parity.
Calibration update: the initial old-assertion controls both passed because the IME finished composition during hierarchy/screenshot collection before the assertion. Those runs are retained as insensitive controls with zero intended-negative credit. Moving the decoration witness and matcher evaluation into one UI-thread turn succeeds on API36, but the API26 system IME can expire the fixture before a witness is observed; that cohort remains 2/5 failed. The next controlled protocol therefore uses an explicit silent test-APK IME, separate from system-IME diagnostics. The guarded runner snapshots/restores original default, enabled methods and subtype settings before stopping/replacing the test APK, retains ownership on failed restoration, and gives this fixture no everyday-keyboard credit. Production code/assets remain unchanged. A local disk-full build failure is also retained; only ignored intermediates in inactive Droidcast scratch checkouts were removed, preserving binaries, receipts and private recovery inputs.
PR #109 is open at 3f87bf7a4182b74ba16c52c113c67613e5f6bb41: #109 . The exact-character matcher preserves every UTF-16 unit while accepting legitimate IME decoration. Recorded scope: 23 controlled positives/seven whole cohorts; two intended strict-annotation failures/zero passes; 137 successful cohort restoration checks and 13 read-only final checks, including original APKs and all573 original app/evidence files. JVM343, Python130 per mode, both build variants and lint0 errors/56 warnings pass. The base/common harness and strengthened same-length supplement keep distinct binaries/source identities. Initial system-IME failures, insensitive controls, the first probes' unrecorded original subtype-history identity and failed modern cleanup with separate16-check recovery remain documented. This changes tests/fixtures, not production input behavior. #69 and broader parity/platform/signing gaps remain open. Exact-head hosted CI and the two independent sol/high audits are pending; no merge clearance is claimed.
PR #109 merged as d8d8978ba63379e332cbef013fa909ea930075da using expected head 3f87bf7a4182b74ba16c52c113c67613e5f6bb41. Root independently verified both parents and merge tree e1e90ae1d5385c70b3f6b073e31ec7fd9ea5f3f7, identical to the reviewed head. Both required independent gpt-6.1-sol/high full-head audits cleared within scope; exact-head Android run42026037454 and local/android58146385516 succeeded. Review conclusions are recorded in COMMENT review5784970043. Issue#108 closed; #69 remains open. Production behavior/assets are unchanged, and the documented system-IME, pre-probe-history, physical/OEM/accessibility and signing limits remain. Watch stopped. Next intake: explicit touch Clear search affordances under the broader touch/readability goal.
Activity
moikdev commentedon Nov 5, 2026
Calibration update: the initial old-assertion controls both passed because the IME finished composition during hierarchy/screenshot collection before the assertion. Those runs are retained as insensitive controls with zero intended-negative credit. Moving the decoration witness and matcher evaluation into one UI-thread turn succeeds on API36, but the API26 system IME can expire the fixture before a witness is observed; that cohort remains 2/5 failed. The next controlled protocol therefore uses an explicit silent test-APK IME, separate from system-IME diagnostics. The guarded runner snapshots/restores original default, enabled methods and subtype settings before stopping/replacing the test APK, retains ownership on failed restoration, and gives this fixture no everyday-keyboard credit. Production code/assets remain unchanged. A local disk-full build failure is also retained; only ignored intermediates in inactive Droidcast scratch checkouts were removed, preserving binaries, receipts and private recovery inputs.
moikdev commentedon Nov 5, 2026
PR #109 is open at
3f87bf7a4182b74ba16c52c113c67613e5f6bb41: #109 . The exact-character matcher preserves every UTF-16 unit while accepting legitimate IME decoration. Recorded scope: 23 controlled positives/seven whole cohorts; two intended strict-annotation failures/zero passes; 137 successful cohort restoration checks and 13 read-only final checks, including original APKs and all573 original app/evidence files. JVM343, Python130 per mode, both build variants and lint0 errors/56 warnings pass. The base/common harness and strengthened same-length supplement keep distinct binaries/source identities. Initial system-IME failures, insensitive controls, the first probes' unrecorded original subtype-history identity and failed modern cleanup with separate16-check recovery remain documented. This changes tests/fixtures, not production input behavior. #69 and broader parity/platform/signing gaps remain open. Exact-head hosted CI and the two independent sol/high audits are pending; no merge clearance is claimed.moikdev commentedon Nov 5, 2026
PR #109 merged as
d8d8978ba63379e332cbef013fa909ea930075dausing expected head3f87bf7a4182b74ba16c52c113c67613e5f6bb41. Root independently verified both parents and merge treee1e90ae1d5385c70b3f6b073e31ec7fd9ea5f3f7, identical to the reviewed head. Both required independent gpt-6.1-sol/high full-head audits cleared within scope; exact-head Android run42026037454 and local/android58146385516 succeeded. Review conclusions are recorded in COMMENT review5784970043. Issue#108 closed; #69 remains open. Production behavior/assets are unchanged, and the documented system-IME, pre-probe-history, physical/OEM/accessibility and signing limits remain. Watch stopped. Next intake: explicit touch Clear search affordances under the broader touch/readability goal.