This all sounds consistent with what I expected. I reckon it's doing the following (in the event the local "spoke" SEPM is unavailable):
- Try to connect to the last good SEPM (the local spoke SEPM) and fail
- Try to connect to any other SEPM in the MSL (in this this only the local spoke SEPM) and fail
- Try to connect to any SEPMs listed in the sylink file (in this case the HUB SEPM) and succeed (which becomes the last known good SEPM)
- Pick up MSL policy pointing it back at the spoke SEPM (fail as it's still down), and continue using last known good SEPM (the HUB one)
Now assuming you get the local spoke SEPM up at this point, you should then get the following behaviour (according to the article I linked):
- SEP Client connects to last known good SEPM (the HUB one)
- After 24 hours, check for for connectivity to the SEPM defined in the MSL (local spoke SEPM)
- Successfully connect to the local spoke SEPM (which becomes the last known good SEPM)
The only difference is that because your MSL lists only the local/spoke SEPM, the SEP clients are switching back to it when you stop the smc process.
Another option you may consider, to force all clients back to the local SEPM after it's up again, would be to temporarily block the SEP Client communications port (8014 by default) between your spoke site and the HUB. This should only need to be for as long as two heartbeats, then you can open it up again.
Just pick whichever method is easier for pointing clients back at the local SEPM