Every memory row carries embedding, embedding_provider,
embedding_model, and a stored text. A re-embed pass:
Replaces:
embedding with a vector from the new
provider/model.
embedding_provider and embedding_model
to match the active config.
Leaves untouched:
text, normalized_text, tags,
importance, metadata.
created_at, updated_at, deleted_at.
expires_at, last_confirmed_at.
forget_reason, replaced_by_id.
record_version, user_id.
Important: soft-deleted rows are re-embedded. Tombstones
participate in dedup-on-write via findSimilarTombstones, so
their vectors have to move into the new model’s space along with
everything else. If the walker skipped them, the dedup-on-write check
would start returning gibberish for previously-corrected facts.