···199 // Remove taken operations
200 m.operations = m.operations[n:]
201000000000000202 return result, nil
203}
204···294 // Validate before saving
295 if err := m.validateLocked(); err != nil {
296 return fmt.Errorf("mempool validation failed, refusing to save: %w", err)
0000000000297 }
298299 // Get only new operations since last save
···199 // Remove taken operations
200 m.operations = m.operations[n:]
201202+ // Adjust lastSavedLen to account for removed operations
203+ if m.lastSavedLen > 0 {
204+ if m.lastSavedLen > n {
205+ m.lastSavedLen -= n // Some saved ops remain
206+ } else {
207+ m.lastSavedLen = 0 // All saved ops were taken
208+ }
209+ }
210+211+ // ✨ Mark dirty since state changed
212+ m.dirty = true
213+214 return result, nil
215}
216···306 // Validate before saving
307 if err := m.validateLocked(); err != nil {
308 return fmt.Errorf("mempool validation failed, refusing to save: %w", err)
309+ }
310+311+ // Bounds check to prevent panic
312+ if m.lastSavedLen > len(m.operations) {
313+ // This shouldn't happen, but if it does, log and reset
314+ if m.verbose {
315+ m.logger.Printf("Warning: lastSavedLen (%d) > operations (%d), resetting to 0",
316+ m.lastSavedLen, len(m.operations))
317+ }
318+ m.lastSavedLen = 0
319 }
320321 // Get only new operations since last save