TIL the hard way: paho-mqtt silently drops messages when the broker is unreachable.
I was running sensor nodes on 4G cellular and kept finding gaps in my data with zero errors logged. Turns out even with QoS 1 there's a window — the message leaves your code, the network drops before