Problem
Observed on device logs (testnet; same shape reported on mainnet). When a client that already has densely stored filters is re-initialized from a checkpoint:
19:08 🚀 Starting sync from checkpoint at height 200000 instead of genesis (requested start height: 227121)
19:08 Starting filter header sync from 200000 to 208000
19:14 Starting filter download (scan_start=1514654, download_start=1514654, stored_filters_tip=0, target=1516000)
#893 makes the filter manager self-heal from any such island (one-time discard + re-download from the scan floor, verified convergent on the affected device). This issue tracks the island-manufacturer itself: after a checkpoint re-initialization that invalidates filter storage, the re-download floor and the wallet scan floor must agree — either resume storing from the re-init floor, or move the wallet/scan floor up to where storage actually resumes.
Full session-by-session log timeline available in #893 (comment) (root-cause follow-up comment).
🤖 Generated with Claude Code
Problem
Observed on device logs (testnet; same shape reported on mainnet). When a client that already has densely stored filters is re-initialized from a checkpoint:
stored_filters_tip=0).1514654..=tipwith the client floor at 200000 — the exact sparse-island state that dash-spv: filter restart with scan_start far below stored tip loads never-populated segments — debug abort / release sentinel reads #892 / fix(dash-spv): don't preload filters below the actually stored range on filter-download start #893 dealt with downstream. Pre-fix(dash-spv): don't preload filters below the actually stored range on filter-download start #893, every later restart crash-looped in debug (SegmentCache::get_itemsassertion) or silently read sentinel filter data in release.#893 makes the filter manager self-heal from any such island (one-time discard + re-download from the scan floor, verified convergent on the affected device). This issue tracks the island-manufacturer itself: after a checkpoint re-initialization that invalidates filter storage, the re-download floor and the wallet scan floor must agree — either resume storing from the re-init floor, or move the wallet/scan floor up to where storage actually resumes.
Full session-by-session log timeline available in #893 (comment) (root-cause follow-up comment).
🤖 Generated with Claude Code