One edge of a Home unit's isConnected streak, as a sync reports it.
disconnected opens the streak (the first false, a constructing
payload included); stale fires ONCE per streak, on the first sync
whose streak age exceeds STALE_COMMUNICATION_HOURS — the same
predicate the facade's isAvailable reads, evaluated here at sync
time where the facade evaluates it at read time, so the edge follows
the flip at the next sync (up to one sync interval later) — and
carries the streak's start; reconnected closes it with that start
and the number of disconnected syncs it spanned. A steady state
either way is null, not a member: these are edges, so a flag that
flaps is reported as the open/close pairs it produces.
One edge of a Home unit's
isConnectedstreak, as a sync reports it.disconnectedopens the streak (the firstfalse, a constructing payload included);stalefires ONCE per streak, on the first sync whose streak age exceeds STALE_COMMUNICATION_HOURS — the same predicate the facade'sisAvailablereads, evaluated here at sync time where the facade evaluates it at read time, so the edge follows the flip at the next sync (up to one sync interval later) — and carries the streak's start;reconnectedcloses it with that start and the number of disconnected syncs it spanned. A steady state either way isnull, not a member: these are edges, so a flag that flaps is reported as the open/close pairs it produces.