In short, the numbers are always correct relative to the node's current idea of what the "best chain" is. And yes, it has been tested extensively, both on the testnet, and in reality.
is there some documentation about this?
move does not involve the network at all, it just creates entries in the internal ledger. As such, they are not subject to rollback.
This could be troublesome for you if you are using move in response to unconfirmed, or barely-confirmed, transactions. But it should be fine to use it for your own transactions.
Example. I get a bunch of small payments from p2pool, but want to de-clutter my wallet. So, I use the raw API to gather a bunch of them up and send them back to their own address. But I use an account to keep track of my p2pool earnings, and now the system thinks I've just been paid again, so I use move to reduce my p2pool account by the same amount as the transaction that I just sent myself. This is safe because I know that I'm not going to double spend against myself.
to rephrase this simple:
account balance is based on 2 things -> tx's which can be unrolled due to blockchain fork/sync/resync/orphaning and move operation which are stored in the wallet and wont be unrolled.
therefore with the example @ #1 if i would move 0.5 BTC away from this account after a double spend attack the account should have a balance of -0.5.
so if a account has 1k tx's, everytime i request "getbalance account" all 1k tx's will be checked for existence and nothing will be cached/similiar? i hope it does check every tx and dosnt cache anything (like everything past 1k blocks).
thanks for your help