Several hours of work lost - what rolled back changes?

Okay, I'm honked off here after losing several hours of work, and even if it's somehow my fault I certainly want to find out why and how to stop it. This has happened more than once in the last couple of days.

I'm in the process of completely revamping my GTD model and changing many attributes of many tasks. I've been editing about 1000 tasks and changing titles, tags, status, context, folder, dates.

Something has been changing them back. I don't know what, but I did extract irrefutable proof. And this scenario didn't even involve multiple laptops.

I'm using a laptop (OSX/Safari) and going in via the web site, showing all tasks and multiline view for each. I edited all of them in some way or another. Because of observing this stealth reverting of tasks earlier (see my question "How is sync done from web browser?") I decided to observe what was happening independently.

I used the Perl module App::Toodledo (which I wrote, so I know how it works and have just updated it for API 2) and ran it in no local caching mode so it was showing me what was on the server for sure.

I ran a search (through the API) once to show a certain set of tasks. I dumped out all their attributes. I edited them through the web interface.

I ran the search again and saw that my changes were reflected in the data from the server.

I closed up the laptop and charged it, came back 4 hours later. I ran the same API search and the tasks were back where they were before the change! Titles, attributes, everything.

I still have the screen on the laptop showing the edits I had made so I am not hallucinating. I am sure as soon as I navigate off that page I will lose them. I brought the site up from a different machine and I see the tasks in their pre-edit state, agreeing with the API search.

Something changed those tasks back in those 4 hours. What???

I noticed when I reopened the laptop that I got a beach ball on the Toodledo page for several minutes, FWIW. I don't see how that could matter.

I have Toodledo apps elsewhere. I have the Toodledo app on the iPhone which was powered on but not in use. I have Toodle Tasks HD and also Done! on the HP Touchpad, which was also powered on but not in use.

The most likely scenario I can think of is that some kind of bug in either of the Touchpad apps undid my changes. I still find that really unlikely but I have no better idea so I removed both of them.

The previous incident I was referring to was when I was switching between two Mac laptops as each's battery ran out, however in this case there was only one laptop in use.

Notice the sentence in bold above: the edits I made were showing on the server right afterwards.

Obviously I am going to experiment now and see if I can get my module to spit out the identity and timestamp of anything making a change, but you get that I am ticked off after wasting thousands of keyclicks and mouse presses. If I had tried editing on the Touchpad at the same time I would have more reason to blame myself but under the circumstances I described someone somewhere has a bug.

I don't know if there's a way of getting my laptop to flush its screen which still shows the edited tasks back to the server but I'm going to try.

Here's a nice data point. I picked one of the tasks that was still showing as the way I had changed it on my laptop. I added a tag to it to trigger a change. I refreshed my view of the task on another machine. It showed the tag change to that task but still had the old values of all the other attributes, like title.

So the browser is saying "Change tags for task ID 12345 to foo,bar" and it's doing that on the server but the title and everything else is still in the inconsistent state where it was rolled back somehow. It doesn't look like I'm going to get all these changes back unless I make changes on the laptop to every single field that was edited... in 154 tasks. Argh.

Here's an even better data point... one of my edits was to remove the tag 'personal' from every task. Now when I pull up the tag page on the web, 'personal' is not in the list of tags in the left bar. However, in the list of tasks in the main page, many of the tasks still show the 'personal' tag. This is on a different machine from the one I was using to make the edits. Refreshing the page makes no difference. So it's idea of the list of possible tags reflects the situation after I made the edits, but the list of tasks themselves reflects the situation after something rolled the tasks back.

Okay, I don't need to air this in public any more. I'll copy it all to a support ticket tomorrow but I'd just reopened one on API documentation today so can't do so before then. I just wanted to see if anyone aside from Toodledo support staff had any ideas.

FWIW, I notice that the server seems to take some time to respond to changes. I made a change at 18:16 through the web browser. I queried the server through the API at 18:30 and it says last task edit 18:15, and the task I just changed shows as the old version. I wait a minute, query again, it says last task edit 18:16 and the task is now the way I edited it. So not completely synchronous. I wait a few more minutes to 18:25 and now it says last edit 18:22, caught up.

We have never heard of this happening before. You mentioned that you are syncing your account simultaneously with several 3rd party apps. I strongly suspect that one of these 3rd party apps is running in the background on one of your devices and syncing incorrectly by overwriting newer versions of tasks with its old versions. This is the only thing that I can think of. It isn't even possible for the website to roll back changes, because we do not keep records of old data. When you edit a task on the website, it is edited in place in the database and the old data is gone. The only way for a task to revert to an old state is if it syncs from something externally that still has a copy of the old data.