1e209caeee
resolveBlobRefsInEntries handed every non-session entry to the recursive async resolvePersistedBlobRefs walk, allocating and awaiting child promises even for plain-text entries with no blob:sha256: refs. On large text-heavy histories this dominated the blob_resolve phase of session open. Add a cheap synchronous containsBlobRef precheck that early-exits on the first ref and allocates nothing. Interleave the precheck with per-entry initiation so positive entries still start resolution at the same relative point as the old filter+map schedule (a later entry that gains a ref during an earlier BlobStore.get is still scanned after that mutation). Blob-free N=5000 fixture: blob_resolve median 19.5ms -> 1.1ms, zero BlobStore.get calls. Fixes #5922