CleverKeys Version
1.5.0
Device Information
Android Phone
Android Version
Android 16
Bug Category
Neural Prediction (ONNX models, swipe typing)
Bug Description
Swiping the word "gorgeous" never produces it as a suggestion — not as the top result, not anywhere in the alternates list at any rank. The word is consistently unreachable via swipe.
Consistent wrong results observed across multiple attempts: Gothenburg, forgetting, github, goog, googlers, foothold, violoncello (results vary per attempt but "gorgeous" never appears).
"Gorgeous" is correctly present in the shipped English dictionary and works fine when typed manually. The issue is specific to swipe input.
Steps to Reproduce
- Open any text field with CleverKeys active
- Swipe the word "gorgeous" carefully, tracing g → o → r → g → e → o → u → s
- Observe suggestions — "gorgeous" does not appear at any position
- Repeat with slow, deliberate tracing and again with normal speed — result is the same
Neural Configuration (if applicable)
The following settings were tested and made no difference:
- Beam width raised to 20 (from default)
- Confidence threshold lowered to 0.01 (near-minimum)
- Short/long swipe boundary adjusted to 83%
- "Gorgeous" manually typed repeatedly to reinforce it in the dictionary
Logs
Troubleshooting Steps
Additional Context
The following thanks to Claude Code:
After investigating the source code, the root cause appears to be in the ONNX gesture decoder rather than vocabulary filtering or dictionary coverage:
- "Gorgeous" is present in the training vocabulary (
vocab/final_vocab.txt, exports/vocab.json, scripts/dictionaries/en/en_words.txt) and is not on the blocklist
- All competing wrong results (Gothenburg, forgetting, etc.) are also tier 0 in the vocabulary — the 0.75× rare penalty applies equally to all of them, so vocabulary filtering is not why "gorgeous" loses
- The model is character-level (CTC/seq2seq over a-z tokens). "Gorgeous" is only reachable if the decoder produces the sequence
g-o-r-g-e-o-u-s. The fact that raising beam width to 20 and lowering confidence to 0.01 makes no difference indicates the decoder is not generating this sequence at all — it is not being filtered out, it is never built
- The gesture for "gorgeous" is self-intersecting: the swipe path visits the 'g' and 'o' keyboard regions twice each, which appears to be a failure mode for the v1 gesture encoder
- The recurring appearance of words starting with 'f' (forgetting, foothold) suggests the model is consistently misreading the gesture start point as 'f' rather than 'g' (adjacent keys on QWERTY)
Hypothesis: "Gorgeous" and other words with self-intersecting swipe paths (where the gesture doubles back through the same keyboard region) are underrepresented in the training data, resulting in the encoder having no reliable mapping for this gesture shape.
Suggested fix: Audit the training/synthetic gesture generation pipeline for coverage of self-intersecting words and add augmented trajectory examples for this class of words before retraining.
CleverKeys Version
1.5.0
Device Information
Android Phone
Android Version
Android 16
Bug Category
Neural Prediction (ONNX models, swipe typing)
Bug Description
Swiping the word "gorgeous" never produces it as a suggestion — not as the top result, not anywhere in the alternates list at any rank. The word is consistently unreachable via swipe.
Consistent wrong results observed across multiple attempts: Gothenburg, forgetting, github, goog, googlers, foothold, violoncello (results vary per attempt but "gorgeous" never appears).
"Gorgeous" is correctly present in the shipped English dictionary and works fine when typed manually. The issue is specific to swipe input.
Steps to Reproduce
Neural Configuration (if applicable)
Logs
Troubleshooting Steps
Additional Context
The following thanks to Claude Code:
After investigating the source code, the root cause appears to be in the ONNX gesture decoder rather than vocabulary filtering or dictionary coverage:
vocab/final_vocab.txt,exports/vocab.json,scripts/dictionaries/en/en_words.txt) and is not on the blocklistg-o-r-g-e-o-u-s. The fact that raising beam width to 20 and lowering confidence to 0.01 makes no difference indicates the decoder is not generating this sequence at all — it is not being filtered out, it is never builtHypothesis: "Gorgeous" and other words with self-intersecting swipe paths (where the gesture doubles back through the same keyboard region) are underrepresented in the training data, resulting in the encoder having no reliable mapping for this gesture shape.
Suggested fix: Audit the training/synthetic gesture generation pipeline for coverage of self-intersecting words and add augmented trajectory examples for this class of words before retraining.