Имхо, для достижения 100% успеха во всех 100% операциях - тяжело будет найти какое-то единственное правильное решение. То есть, каждую Вашу операцию нужно будет согласовывать с сервером, на предмет непротиворечивости данных, в контексте требований к скорости работы приложения.
Другими словами, там где требуется скорость - вы на клиенте "доводите" данные до нужного состояние "непротиворечивости" с данными от сервера, но не выкачиваете их (и не генерируете), в других местах, где скорость не так важна - смело берете данные с сервера.