The saved USN cursor also needs to be associated with the notebook and tag scope that produced it. If a user expands the configured scope, previously excluded notes may not receive new updates and therefore never appear in incremental chunks after the existing cursor.
I would treat a scope change as a reconciliation event, with a test that adds a notebook containing unchanged notes. The opposing test narrows the scope and checks removals only after a complete listing succeeds. That exercises configuration changes separately from the update and deletion events your fake client already covers.
Laxman Joshi
be it is..
Thanks, this was a real gap. I confirmed in the code that the saved state recorded the cursor but not the notebook/tag scope that produced it, so widening the scope would miss unchanged notes, and narrowing it would leave stale ones. I've pushed a fix to the PR the scope is now stored with the cursor, and any change triggers a full resync that reconciles removals only after the complete listing succeeds. I added tests for widening, narrowing, failure during the listing, and unchanged scope. Appreciate the careful read.