It depends a bit on what you call valid (validity is in the eye of the beholder, who can have, for instance, complicated business rules he would like to be obeyed). What Ethereum guarantees is that the state of the contract will be consistent. If a contract updates two variables, you will never see from the outside a state where only one variable has changed (things like cryptocurrencies would be unthinkable otherwise). Ethereum works with transactions.
In the case you mention in the new version of your question; you would get 10 (the old value) since reading a variable in Ethereum is a purely local operation (nothing is sent on the network). Nodes see the same values only if they are at the same block number. Otherwise, Ethereum only provides "eventual consistency".
I suggest that you read the seminal paper "ETHEREUM: A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER" by Gavin Wood, where it is well explained.