···493493 return 0, fmt.Errorf("failed to create new mempool: %w", err)
494494 }
495495496496+ oldMempool := m.mempool
496497 m.mempool = newMempool
498498+499499+ oldMempool.Clear()
497500498501 // ✨ Update DID index if enabled and track timing
499502 var indexUpdateDuration time.Duration
+8-10
internal/mempool/mempool.go
···199199 // Remove taken operations
200200 m.operations = m.operations[n:]
201201202202- // Adjust lastSavedLen to account for removed operations
203203- if m.lastSavedLen > 0 {
204204- if m.lastSavedLen > n {
205205- m.lastSavedLen -= n // Some saved ops remain
206206- } else {
207207- m.lastSavedLen = 0 // All saved ops were taken
208208- }
209209- }
202202+ // ✨ FIX: ALWAYS reset tracking after Take
203203+ // Take() means we're consuming these ops for a bundle
204204+ // Any remaining ops are "new" and unsaved
205205+ m.lastSavedLen = 0
206206+ m.lastSaveTime = time.Now()
210207211211- // ✨ Mark dirty since state changed
212212- m.dirty = true
208208+ // Mark dirty only if ops remain
209209+ m.dirty = len(m.operations) > 0
210210+ m.validated = false
213211214212 return result, nil
215213}