aspfun,
for your step 1, I assume you inserted the random rows on the remote, you sync to local, so the 3 rows get downloaded to client, they both have 3 rows each
step 2, you delete a row in the remote, when you sync, the deleted row should have been propagated to the client, thus both client and server should have 2 rows each. if you delete a row at one end, the delete operation is propagated, the client will not replace the deleted row with its copy
in step 3, if step 2 worked, then you should only have 2 rows left in the client. if you delete the two rows in the client, it will be propagated to the server. Now your server has only 2 rows based on step 2. so you should end up with no rows on both servers.
Are you sure you configured bidirectional sync?
do a trace using SQL profiler so you see what statements are going up to the server.