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.