"to ensure it's present with pushnew" is precisely what the very last line of asdf/package-system.lisp does.
Unhappily, you subsequently clobber said function.
Instead of wholly clobbering asdf:*system-definition-search-functions*, couldn't you just remove-if from it members of an undesirable subset, i.e. SYSDEF-CENTRAL-REGISTRY-SEARCH and SYSDEF-SOURCE-REGISTRY-SEARCH ? Or, once again, you could (locally) bind *central-registry* to nil and *source-registry* to (make-hash-table :test 'equal).
Since you don't specify what exactly you're trying to do, it's hard to tell how to help.
"to ensure it's present with pushnew" is precisely what the very last line of asdf/package- system. lisp does.
Unhappily, you subsequently clobber said function.
Instead of wholly clobbering asdf:*system- definition- search- functions* , couldn't you just remove-if from it members of an undesirable subset, i.e. SYSDEF- CENTRAL- REGISTRY- SEARCH and SYSDEF- SOURCE- REGISTRY- SEARCH ? Or, once again, you could (locally) bind *central-registry* to nil and *source-registry* to (make-hash-table :test 'equal).
Since you don't specify what exactly you're trying to do, it's hard to tell how to help.