The pause control is applied to only two functions, stake and contributeBonus, plus pause itself. These same two functions are also the ones bounded by expiry, because each reverts once block.timestamp >= expiry.
Because the pause and the expiry check both sit on the same two functions, expiry is the only timer that has a real interaction with the pause. While the pool is paused, users cannot stake and cannot contribute bonus. At the same time expiry keeps moving toward its fixed value and is never extended. So every second spent paused is a second removed from the deposit window, and that time is not given back. If a pause lasts until after expiry, the deposit window can be fully consumed, and after unpausing users still cannot deposit because the block.timestamp >= expiry check now fails on its own.
Recommendation: make clear in the documentation that a pause only blocks new stake and new bonus, that it does not stop resolution, claims, or withdrawals, and that it does not stop or extend any timer. State plainly that expiry keeps running during a pause, so the deposit window is reduced by the paused duration and is not recovered. If preserving the full deposit window matters, consider a mechanism that records how long the pool was paused and extends expiry by that duration, keeping in mind that expiry is currently locked after the first stake, so any such extension would need its own controlled path rather than the existing sponsor setter.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.