Optimistic - to the extent user experience does not suffer and to the point of not being deceptive.
Optimistic updates are a lot harder than they might appear, and require very careful handling of edge cases - especially when concurrency is involved. Not handling these edge cases properly can result in very poor user experience or set incorrect expectations.
Hashnode's answer box, trello etc. are great examples where optimistic UI really improve the user experience. But when you are talking about complex collaborative apps or multiplayer games then things can easily get brittle. You don't want to allow users to optimistically kill an opponent who might have actually drifted away but the client did not get that information due to network lag. You can not expect people to respond well if you have optimistically incremented their score for an achievement and then reduce it later when you realize that the accomplishment was in fact claimed by someone else.
Some level of conservativeness is usually necessary to keep the expectations in check. This may be something simple as a nanobar, putting a mask over the section that shows aggregated values after a form submission or something as complex as an animation that zooms out and elegant restores a card back to its previous column if the column it was being moved to got deleted by someone else.
Then there are cases which lie beyond the scope of any optimism - bank transactions, shopping cart checkout, financial feeds etc. where showing any hint of success before the operation has actually completed can be treated as a deception.