Part of #18.
Don't block legitimate new-word learning, but stop a single misfire from hijacking a real word. Graduated trust: a non-dictionary learned word (isValid=false) needs MORE repetition before it can override a real dictionary word that the geometry matches better. New words still learn (slowly); junk can't instantly out-rank a common word. Levers: cap/penalize the language-cost of isValid=false words until a confirmation threshold; fix the batch garbage filter (DictionaryFacilitatorImpl.kt:551) to not trust isInDictionary for invalid words.
Acceptance: a once-seen non-dict word does not outrank a real dict word with better geometry; deliberate repeated new words still get learned.
Part of #18.
Don't block legitimate new-word learning, but stop a single misfire from hijacking a real word. Graduated trust: a non-dictionary learned word (isValid=false) needs MORE repetition before it can override a real dictionary word that the geometry matches better. New words still learn (slowly); junk can't instantly out-rank a common word. Levers: cap/penalize the language-cost of isValid=false words until a confirmation threshold; fix the batch garbage filter (DictionaryFacilitatorImpl.kt:551) to not trust isInDictionary for invalid words.
Acceptance: a once-seen non-dict word does not outrank a real dict word with better geometry; deliberate repeated new words still get learned.