Looking at the code, BreakfastManager.getBreakfast() does SpecialOutfit.createImplicitCheckpoint() at the top and SpecialOutfit.restoreImplicitCheckpoint() at the end. If the first call thought you had an ice bucket equipped, the second call would make sure you had one available - via creation, if necessary.
The question is why KoLmafia would think you had an ice bucket available for the first call but had figred out you didn't actually have one by the second call.
We get your equipment every time we call api.php. That is one of the first thing we do when you log in. It is also called after many internal requests - whenever KoL would have the browser refresh the charpane.
What happens if you log into KoL in a plain browser after rollover with an ice item that melted? Does it, perhaps, give you a message when it loads main.php to tell you that your item has melted? If so, this could be analogous to your Pen Pal: you get a message in kmail each day, but it is not actually in your inventory (as retrieved by api.php) until you go to main.php and it tells you that you've received a message from your Pen Pal - at which point, if you refresh inventoy, you have the item.
Conjecture: if you have an ice item equipped at rollover, when you log in with KoLmafia, the initial api.php shows the item in your equipment array. If you then open the relay browser, say, KoL tells you that your item has melted - and a subsequent api.php call will not find the item.
If there is nothing in the normal set of calls we do at login that makes KoL tell you that you've lost the item, when we run breakfast, the saved outfit has the ice item.
If something done during breakfast makes KoL tell you that you've lost the item - and we load api.php during breakfast, as we certainly will - when we restore the checkpoint, we'll try to re-make the item.
I'd like to see this:
Uncheck the "run breakfast" checkbox on the Login Frame
Open the gCLI and say "debug on"
Log in via KoLmafia
-> that will let us see what api.php returns
Open the Relay Browser
-> Tell us if KoL says something about your ice item melting
Click the "refresh" button at the bottom of the Green Sidepane of KoLmafia's GUI
-> that will run api.php again and we can see what the new equipment array is
Open the gCLI and say "debug off".
And we can look at the DEBUG log and see if my conjectures have any truth to them. Any "veracity", you might say.