From b492b57e19d4fb07367ae816e200caddaa635b2f Mon Sep 17 00:00:00 2001 From: Raj Kripal Danday Date: Wed, 3 Jun 2026 12:02:32 -0700 Subject: [PATCH] fix(sleep): drop stale embeddings with non-modal dimension in _load_embedding_matrix Dream nodes embedded with the old all-MiniLM-L6-v2 model (384-dim) crash np.array() when mixed with gte-large embeddings (1024-dim). Filter to the modal dimension so sleep never crashes from leftover old-model embeddings. Co-Authored-By: Claude Sonnet 4.6 --- core/sleep.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/sleep.py b/core/sleep.py index 92db4c0..799b1a4 100644 --- a/core/sleep.py +++ b/core/sleep.py @@ -159,6 +159,15 @@ def _load_embedding_matrix( logger.warning("sleep: skipped %d bad embeddings", bad) if not vectors: return [], np.array([]) + # Filter to modal dimension so stale embeddings from old models don't crash np.array() + from collections import Counter + modal_dim = Counter(len(v) for v in vectors).most_common(1)[0][0] + dim_filtered = [(nid, v) for nid, v in zip(valid_ids, vectors) if len(v) == modal_dim] + dropped = len(vectors) - len(dim_filtered) + if dropped: + logger.warning("sleep: dropped %d embeddings with non-modal dimension (modal=%d)", dropped, modal_dim) + valid_ids = [nid for nid, _ in dim_filtered] + vectors = [v for _, v in dim_filtered] return valid_ids, np.array(vectors)