Build the query adapter over a store, folding whatever overlay() returns at
call time. overlay is a getter, not a value: the backend creates its
MutablePropertyView lazily on the first mutation, so a session that is only
ever read gets null on every call and keeps the original store-only path.
Optionaloptions: {
Shared headless host adapters. All reads include the supplied live mutation overlay.