/etc/cron.d/vyos-wwan re-entered conf_mode every 5 minutes to re-dial a lost session. A tick landing before the running config is populated makes get_config() return only {'ifname', 'deleted'}, so apply() takes the teardown branch: it stops the DHCP clients, stops ModemManager and unlinks its own cron file, leaving the interface dead until the next manual commit. Being timing dependent, it presents as an intermittently dead WWAN interface which can but must not happen.
Separately, disconnect interface wwan0 was undone by the next re-dial pass, which cannot tell a session lost to RF signal loss from one taken down on purpose. Dropping the bearer does not touch the netdev either - a cdc_mbim/qmi_wwan interface stays UP at operstate unknown, so it kept reporting u/u on show interfaes and held the address of the session that had just ended.
Also show_wwan.py drove qmicli against /dev/cdc-wdmN, which assumes a QMI control port. On an MBIM modem every subcommand failed after a five second CID allocation timeout, and a bare except: reported all of it as Command not supported by Modem.
Move all communication to vyos-netlinkd and ModemManager