“Receive Only” means that the device doesn’t make the changes to files made on this device available to the swarm. That, and only that.
So, say you have your setup. Device A adds files foo
, bar
, and baz
while B and C are online, and D is offline. B and C become aware of this and start syncing: B gets foo
, C gets bar
, and then A gets offline so they don’t get baz
. But now B is aware that there should be bar
and baz
, and C has exactly the copy of bar
B needs, so B gets it from C. However, foo
gets changed on B, and qux
gets added. B doesn’t send the changes it made to foo
, neither it tells anyone about qux
, but B no longer has the version of foo
that C needs, so C can’t get foo
from B.
Now D comes online. It gets bar
from either B or C, and becomes aware of foo
and baz
that neither of them has (well, B does, but it’s the wrong version), so D knows (and shows you in the interface) that it’s not completely synced.
B and C go offline, A comes online, D gets foo
and baz
and is now completely synced.
A goes offline again, B and C go online. They now know (from D) that they can get correct versions of foo
and baz
, and C does so; now C is in sync with the swarm, too. B gets baz
, too, but doesn’t get foo
, because it has a newer local version.
Now B shows you that it has local changes (new foo
and qux
that it never told anyone else about). If you (the user) press the “Revert local changes” button on B, it will re-download the “canonical” version of foo
from anybody who has it, and remove qux
, so that it becomes in sync with the swarm, too.