On Sunday I opened all 12 of my iPhone apps in the Release configuration and walked through them like a user. In ReceiptCrate, I added a receipt with no return or warranty deadline. The app labeled it Expired.
Alerts made the bug hard to miss. The same receipt showed "No active deadline," "Expired," and "2 DAYS AGO" on one screen. Those three lines could not all be true.
The status function checked for an active deadline. If it found one, it picked the matching state. If it found none, it dropped to Expired. That worked for a receipt whose tracked deadlines had passed. It also caught the valid case where both deadline fields were empty.
No unit test had ever built that empty case. The suite stayed green because I never asked it what a saved receipt with both deadline fields missing should be called.
The code fix was one explicit branch: if both deadlines are absent, return Saved. I erased the simulator, built Release, and created the receipt again. It showed Saved in Crate, Search, and Detail. It stayed out of Alerts. 86 of 86 Release tests passed.
I also installed the new build over the old 1.1 store. The same receipt and its attached image survived, and the visible status changed from Expired to Saved. ReceiptCrate 1.1.0 is still the live App Store version. The fix is in the development line for the next update.
I added the missing test by name: no return or warranty deadline equals Saved. It should have been there from the start.