Ah HAH! I will try that.
That could explain everything; unlike others who sync their work, home and phone (and use all three frequently), I work from home. Which means I only use OF on the laptop when I'm traveling or working from Starbucks, and I only use OF on the phone when I'm out doing errands (no commute). So it's a rare situation where I'll do two "full round robin" syncs an hour apart.
Would you be able to eliminate that wait by storing a lock-like file, named for the client, at the START of the sync? Then you'd know if a client was in the middle of a slow sync. I dunno what the race conditions would be, though.
---
Update: Yes, that works. I synced all three clients, waited an hour, and synced all three again. That, alone, didn't coalesce the Omnifocus file, but it set the stage for it, since there was no longer any pending file less than an hour old.
I synced the desktop once more, and it now coalesced its local file. Ditto for the laptop, and, I presume the phone.
That's interesting behavior; it's intuitive as a programmer, and I can't particularly come up with a way to avoid the need for multiple rounds of syncing, but man - it seems kinda unlikely to happen on its own.
I wonder if there's a way to do the sync equivalent of "optimistic locking", where you'd set aside the files that were PROBABLY safe to eliminate, and leave them out of the iDisk copy. Then, if you discover that a client missed them, you'd reinstate them on a future sync. Depending on the semantics of your sync, that might risk having an infrequently-synced client getting belated updates. But if not, it oughta work. Feel free to contact me privately if you want a set of eyes on the problem.
Last edited by Jay Levitt; 2008-09-20 at 05:32 AM..