In Emacs 27 or 28, each and every partial fragment of text introduced to the completion system gets put into obarray. From emacs -Q:
(intern-soft "ohno") <C-M-x> -> nil
(ohno <M-TAB> -> No match
(intern-soft "ohno") <C-M-x> -> ohno :(
This has the result that, e.g.:
(test-completion "ohno" obarray nil) <C-M-x> ; t! Sigh
will always return t during completion, for any completed fragment. For completion systems that complete against obarray (e.g. emacs-lisp), this is obviously undesirable.