Yes, these are all great questions and concerns.
I don't think I can be of very much help because I actually do not use Buffering in my app(s), and have not in a very long time, because I use Sql Server and SqlExec(), and all of these issues are handled in my Data Access framework to get changes in the local cursor pushed back into Sql Server.
However, I know that this is a very commonly used aspect of VFP apps.
In fact, I did a little poll back in late Nov 2019 on the Leafe ProFox mailing list with a question titled
"How common is Table Buffering with DBFs?"
Here are the replies to that question, in case it can help you see what they responded (and *who* responded)
https://leafe.com/archives/full_thread/514457
Here is the question I asked, but you will need to follow the link above to see all the replies:
For a while when my app was still on DBFs (instead of Sql Server) I used Table Buffering, with TableUpdate() and TableRevert() on all my CRUD forms. I remember that it could get tricky keeping it all working correctly in the UI, but in the end I had a pretty good pattern in place. I took the path of making the user take the form into Edit Mode, then they could Save or Cancel, and I handled TableUpdate() or TableRevert() accordingly.
Anyway, I'm just trying to get a feel for how broadly used is Table Buffering is in DBF-based apps?? It it a low number like 10%, or maybe 30%?
Did any of the other XBase language every have this table buffering paradigm in them?
I'm probing into this as (self-assigned) research so I can enlighten the X# Dev Team if this is something they may face as a common pattern in VFP apps if anyone tried to move this sort of app over to X# one day.