buildIndexesInBackground
Builds sidecars for whatever is not yet covered, on the catalog's own thread, returning at once.
The non-blocking half of attach: attach(store, backfill = false) takes what is on disk and returns immediately, and this covers the rest without holding anybody up. That pairing is what lets a store with a large uncovered backlog open instantly and converge afterwards, instead of choosing between a slow open and an index that never finishes building.
Its IndexBuild.handle is null: covering what the sidecars do not is a fact about the catalog rather than about any one index.