Problem
Currently we have configuration params cleanup and skip_cleanup_if_failed.
Despite their names sound similar, they are responsible for completely different things: cleanup controls the database re-creation before each test, and skip_cleanup_if_failed controls whether records, added by haveInDatabase() should be erased after the test.
Suggested fix
It would be good to distinguish these two 'cleanups' in documentation and in the names of config params in next major versions.
For example, to rename cleanup to repopulate (since we have populate responsible for initial database creation).