There are multiple wrong points from my point of view in here:

> it needs to cache outgoing changes anyway until they are pushed out

The behaviour was such that if you disable caching it will push out changes immediately, which is the desired behaviour for apps that don't want to use caching.

> if you wrote to a document then probably you want to be informed if it's changed remotely, this is a good default

I don't understand at all what that means in this context.

> you are likely to need them again if the user refreshes the page, and IndexedDB has enough storage space - caching them is a good default

No, you are not. You just assume something, but if as a developer I tell the app to not cache a tree, then I explicitly don't want to use it again, until I want to load it again. It's up to me as an app developer to decide how to cache it in the app layer or in remoteStorage, and you just took away that control from me. Caching them when I don't want to cache them is NOT "a good default".

> you probably want to know if they changed after you retrieved them

No, I do not. You even say "probably", because that assumption is so far out for people/apps who explicitly say "don't cache this".

> if you worry about disk space, you can call BaseClient#flush(path) to flush a whole subtree from the cache

If I worry about disk space, then I say don't cache this and I expect to not ever be stored on disk, until I explicitly store it there.

> the only benefit of flushing is saving disk space, and disk space is cheap

No, disk space is NOT cheap on mobile devices. Neither is memory. I think you should finally get a smart phone, because you're always arguing from a desktop computer perspective. With this default, you'd mirror all of your remoteStorage somewhere in IndexedDB by default.

> if we ever get around to writing the browser plugin, then you wouldn't have to flush at all anymore, your device would just have a full (and only one) copy of all your data

1. That's just a vague idea for the future, so there's no point in mentioning it in any argument about the current code and behaviour.
2. I wouldn't have to flush anything, if it did what I tell it to do.
3. I don't want my device to have a full copy of my data. Both because of disk space and slow connections. Seriously, please start using a mobile phone for apps, please!