Test suite
While the tests appear to have good code coverage, we highly recommend writing more tests involving time manipulation (vm.warp) and more redemption scenarios.
Additionally, the contract lends itself to fuzz testing, which could help uncover edge cases that are not easy to discover with other dynamic testing.