Ok, so I'd be pretty sure that actually all the bonding info stays in place after a reboot. @user156416 so you actually checked what I said, and Android reported it was bonded?
Because I'd have thought that even if Android remembered it was bonded, if the bonds were erased on the Bangle then it would refuse to connect.
So I think the issue is probably the very recently added
NRF.resolveAddress which tries to resolve the address: https://www.espruino.com/Reference#l_NRF_resolveAddress
(code for it is at https://github.com/espruino/Espruino/blob/cfbc4040dac6a7881e3465f60adc4dd8a1e45b85/targets/nrf5x/bluetooth.c#L3654-L3673)
Maybe you could try calling it from the IDE along with NRF.getSecurityStatus() after a reboot (you can do remote access from a desktop via the App Loader in Gadgetbridge). I would imagine that if bonded,
bonded would still stay true after a reboot but maybe
resolveAddress(NRF.getSecurityStatus().connected_addr) might not work for you?
If so, perhaps while the peer info is all saved to storage, maybe the peer manager doesn't actually load it on boot, so
pm_next_peer_id_get ends up not iterating over all saved peers?