@mtnscott there are two potential issues to debug: why the Core disconnects, and why it fails to re-connect.
For the former (why it disconnects), the failure, I believe, occurs somewhere in the SparkProtocol::event_loop() function:
As part of the main loop (main.cpp:142), Spark_Communication_Loop() is called (main.cpp:178, spark_utilities.cpp:402). This returns the results of spark_protocol.event_loop() (spark_utilities.cpp:404), which is defined in core-communications-lib, spark_protocol.cpp:125. If this function returns false, I believe that’s what causes the CFOD (main.cpp:185).
Now as for the second issue: in the SPARK_WLAN_Loop(), if the Core is not connected, it calls Spark_Connect() (spark_wlan.cpp:533). For some reason, this is not re-initiating the connection like it's supposed to. Because we never see any further changes to the LED, it suggests to me that Spark_Connect() may be blocking forever.