Thats what I am planning to do as well. Do you have any kind of strategies you have developed? Do you write tests for the order of assertions (entering temporal logic)?
As for strategies, I pepper asserts on inputs and outputs of functions to remove any assumptions about scale and state which are not enforceable by the contract at compile time. Additionally I will tend to assert conditions which need to be in place within the functions. Rarely does anything need any more than that.
Assertions are left in production and any identifiable errors or throws are turned into defects and resolved as priority 1 cases.