Commit e9a59de
refactor(cli): collection.delete(where=) instead of nuke-and-rebuild
Addresses @igorls's review on MemPalace#1087:
1. **Premise was wrong (MemPalace#521 doesn't apply to delete-by-where).** The
original implementation extracted survivors, rmtree'd the palace,
and re-inserted into a fresh collection — predicated on the idea
that collection.delete(where=...) would trigger the same
updatePoint / repairConnectionsForUpdate race as the upsert path
in MemPalace#521. It doesn't: chromadb's filter-delete bypasses the HNSW
update codepath that races. The simpler approach is correct.
2. **Embedding function preserved.** No more bypassing
ChromaBackend.create_collection / _resolve_embedding_function —
we never recreate the collection at all.
3. **No data loss on interrupt.** No rmtree means no window where a
crash leaves the palace empty.
4. **Routes through the backend.** Uses ChromaBackend.get_collection
instead of `import chromadb; PersistentClient(...)` directly.
No more `del col, client` reliance on refcount finalization.
5. **Reuses confirm_destructive_action.** Replaces the custom
`input(...)` prompt with the migrate.py helper.
End-to-end test added: real chromadb palace, real backend, real delete,
verify count + surviving ids. Catches the embedding-function regression
that was the load-bearing concern in the review.
Closes MemPalace#848 narrowly (wing/room delete). Source-file / query / dry-run
modes from MemPalace#848's broader ask are deliberately NOT in scope here —
filing as follow-ups if there's appetite.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent b63f5fa commit e9a59de
2 files changed
Lines changed: 126 additions & 124 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
287 | 287 | | |
288 | 288 | | |
289 | 289 | | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
301 | 301 | | |
302 | | - | |
303 | | - | |
| 302 | + | |
| 303 | + | |
304 | 304 | | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
310 | 310 | | |
311 | 311 | | |
312 | 312 | | |
313 | | - | |
314 | 313 | | |
315 | 314 | | |
316 | 315 | | |
| |||
321 | 320 | | |
322 | 321 | | |
323 | 322 | | |
324 | | - | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
325 | 329 | | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
331 | | - | |
332 | | - | |
333 | | - | |
334 | | - | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
335 | 341 | | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
340 | 350 | | |
341 | 351 | | |
342 | 352 | | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
| 353 | + | |
349 | 354 | | |
350 | 355 | | |
351 | | - | |
352 | | - | |
353 | | - | |
| 356 | + | |
354 | 357 | | |
355 | 358 | | |
356 | | - | |
357 | | - | |
358 | | - | |
359 | | - | |
360 | | - | |
361 | | - | |
362 | | - | |
363 | | - | |
364 | | - | |
365 | | - | |
366 | | - | |
367 | | - | |
368 | | - | |
369 | | - | |
370 | | - | |
371 | | - | |
372 | | - | |
373 | | - | |
374 | | - | |
375 | | - | |
376 | | - | |
377 | | - | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | | - | |
385 | | - | |
386 | | - | |
387 | | - | |
388 | | - | |
389 | | - | |
390 | | - | |
391 | | - | |
392 | | - | |
393 | | - | |
394 | | - | |
395 | | - | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
396 | 365 | | |
397 | | - | |
| 366 | + | |
| 367 | + | |
398 | 368 | | |
399 | 369 | | |
400 | 370 | | |
| |||
888 | 858 | | |
889 | 859 | | |
890 | 860 | | |
891 | | - | |
| 861 | + | |
892 | 862 | | |
893 | 863 | | |
894 | 864 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
70 | 68 | | |
71 | 69 | | |
72 | 70 | | |
73 | 71 | | |
74 | 72 | | |
75 | | - | |
| 73 | + | |
76 | 74 | | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
86 | 81 | | |
87 | 82 | | |
88 | | - | |
89 | 83 | | |
90 | 84 | | |
91 | 85 | | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
96 | 94 | | |
97 | | - | |
98 | 95 | | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
105 | 99 | | |
106 | 100 | | |
107 | 101 | | |
108 | | - | |
| 102 | + | |
109 | 103 | | |
110 | 104 | | |
111 | 105 | | |
112 | | - | |
| 106 | + | |
113 | 107 | | |
114 | | - | |
115 | | - | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
116 | 114 | | |
117 | | - | |
118 | 115 | | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
124 | 119 | | |
125 | | - | |
126 | 120 | | |
127 | 121 | | |
128 | 122 | | |
129 | 123 | | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
130 | 162 | | |
131 | 163 | | |
132 | 164 | | |
| |||
0 commit comments