Issue 1 is much worse than you think!
simulate this with any ABC program, running "2 instances on the LAN" (or 2 instances on the same machine.)
a) go to any auto-incrementing form
b) go to the other instance, to the browse. The "half entered" row is visible.
This is a side-effect of using auto-incrementing with ABC. (or Legacy). The templates always add a record at the start of the form (even if it is not necessary.) [aside: NetWebForms are smarter, they decide if it is necessary or not, and also give you overrides so you can control the behavior.]
The "sync" is doing exactly what you want it to do - synchronizing the database. The problem is thus not with the sync, but with the underlying ABC approach.
Fortunately the problem is much reduced when you are not using auto-Inc just to identify rows. In the desktop example auto-inc is only done in 1 place, the Invoice number. Notice also that the auto-inc key on that table is NOT unique. (Since multiple different desktops could add invoices with the same number.) If I did have a need to auto-number like this I would be tempted to re-set the number as the record arrives into the server.
Assuming your browses suppress "deleted records" one way to possibly avoid the problem you are seeing with a half-completed record though is perhaps to set the DeletedTimeStamp field to "now" when the form is opened, then clear that when the form is closed. I haven't tested this approach though, so try it out first.
INV:DeletedTimeStamp = glo:SyncDesktop.GetElapsedTimeUTC()
Cheers
Bruce