Stability cleanup: remove falsified two-thumb experiment code from production paths #147
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Why
main / v0.3.0 is stable, but dev currently carries ~1,950 added lines from the two-thumb experiment in #141. Device testing falsified the central production claim:
DUAL_POINTERproduces nonsense for real words such as "ambulance".- The research harness measured the in-repo AOSP decoder, but the feature is visible only when a user-supplied/system glide library is loaded — a different, closed binary.
IdealPrefixTrailBuilderwas also actively harmful when no native library was loaded, until the UI was gated.
Known-bad default-off code is still complexity in the hot input path. Leaving it around indefinitely is exactly how an experimental fork becomes unmaintainable.
Keep — proven or independently useful
PointerIdNormalizerand its tests: fixes a real zero-suggestions bug when no input point carries id0.- Side-by-side
experimentalbuild type (.exp) and distinct IME label: useful infrastructure for future device A/B tests. - Historical findings in docs/issues, including the falsification and why the measured decoder was not the running decoder.
Remove from production paths
DUAL_POINTERmode and its preference/UI.IdealPrefixTrailBuilderand its preference/UI.- Re-timing/gap/interval preferences.
StrokeAlignerindirection if its only remaining purpose is those modes; restore the previous connector merge directly inWordComposerrather than preserving an abstraction around a dead experiment.- Native two-pointer host harness assertions that imply relevance to the user-supplied decoder. Keep only if clearly labelled as testing the unused in-repo engine and it provides ongoing value.
- Settings/search wiring and strings for removed controls.
Definition of done
- Normal/default typing path is as close as practical to pre-Two-thumb experimental build (upstream v4.1.2 merged, installs side by side) #141 complexity.
- No known-bad two-track or synthetic-prefix options are exposed.
- Proven pointer-id normalization remains.
.exppackaging remains for future controlled experiments.- Existing regression corpus and native suite pass; full JVM results match the checked-in baseline through
tools/check_test_results.py. - Device smoke: normal swipe, two-thumb connector behavior, and no zero-suggestion case after pointer id
0lifts.
Ordering
Land after the LeanBitLab v4.1.8 sync and the double-tap Shift fix, so the cleanup is based on the tree we intend to stabilize rather than creating another rebase/conflict round.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Activity
AsafMah commentedon Sep 3, 2026
Completed by #151. The falsified DUAL_POINTER/ideal-prefix/re-timing machinery and misleading host harness are removed; PointerIdNormalizer and EXP packaging remain. Final gates: fork invariant pass, 343 tests with only the four known Windows ParserTest failures, native host suite green.