This was prompted by https://github.com/syncthing/syncthing/issues/6262. I did not test the following yet, but it seems valid to me:
- Device A shares a receive-only folder with devices B and C, everything is in sync and C is not connected currently.
- Device B changes file F, it syncs to A.
- Device C changes the same file F and then connects.
Result: A sees the conflicting change to F by C and resolves it, creating a conflict copy, which gets the receive-only flag, thus isn’t propagated to B and C.
I would argue that this is not a local change and thus shouldn’t get the flag.
Solving it is tricky though: Currently we just create the conflict file and schedule it for scanning. Either the scanner needs to gain knowledge on conflicts or we directly add the the conflict to the db in the puller. I believe the latter should be easier.
Does that make sense?