Woke up this morning with most of the design for a smarter approach to syncing in my head. (This is why I sometimes slip up and tell people I work on this project 12 hours a day..)

To keep the current assistant branch working while I make changes that break use cases that are working, I've started developing in a new branch, assistant-wip.

In it, I've started getting rid of unnecessary expensive transfer scans.

First optimisation I've done is to detect when a remote that was disconnected has diverged its git-annex branch from the local branch. Only when that's the case does a new transfer scan need to be done, to find out what new stuff might be available on that remote, to have caused the change to its branch, while it was disconnected.

That broke a lot of stuff. I have a plan to fix it written down in syncing. It'll involve keeping track of whether a transfer scan has ever been done (if not, one should be run), and recording logs when transfers failed, so those failed transfers can be retried when the remote gets reconnected.