Yes at first look helicopter view your code feels OK - I trusted your comment that the alarm triggers at the right time if you don't cut power supply.
Hence my suspicion on battery. have a look at this topic and answer #1 about cutting the trace
I would recommend the rechargeable battery