> When do you consider the write/transaction to be completed?
Sending a UPDATE/INSERT/DELETE statement to SQLite is not blocking? I would think it is, because in my code I can read the number of affected rows right after I sent the query.
> What do you do about out-of-sync read replicas?
Delete them and replace them by uploading a checkpoint and replaying a log of the queries since then.
Having a single DB that takes write queries via a proxy which spreads them out to multiple read-only-DBs sounds easy at first.