ee6fb0ed22
rosterCleared was a single boolean latched the first time the peer set fell below two connections. When the sole connection a was replaced by c between ticks (still length 1) the flag stayed set, so c's gateway never received the empty-roster push and kept the stale roster. Track the id of the connection that got the clear instead and push whenever the sole connection's id differs; reset once two or more connections relay again. Review finding: routes [a] → tick → routes [c] → tick pushed no roster clear to c.