Context
Examples/Sundial/WATCHCONNECTIVITY_DIAGNOSTICS.md (removed from the tree — full text in git history) captured a resolved 2025-11-10 investigation whose findings are durable and belong in the package docs (e.g. a 'WatchConnectivity behavior notes' DocC article or README section), not in an example directory.
Durable findings to preserve
- Asymmetric reachability is NORMAL: watchOS actively monitors iPhone reachability; iOS passively monitors the watch (battery). The iPhone routinely reports
isReachable: false while messages still deliver — WatchConnectivity determines actual reachability during the send, not at observation time.
isPairedAppInstalled degrades with Xcode installs: apps side-loaded via Xcode don't register properly with WatchConnectivity's app database (com.apple.wcd logs 'Application context data is nil'). Status display is wrong (false), but sends still work. Production installs via the Watch app report correctly. Worth documenting as a development-build caveat.
- Live-state-before-send pattern: cached/@published connectivity state goes stale across async boundaries; read
isReachable/activationState from the actor immediately before sending and log the actual transport from the send result, not the predicted one.
- Platform cheat-sheet: watchOS —
isPaired implicitly true, pairedUpdates() unavailable, reachability reported more consistently; iOS — conservative reachability reporting.
Task
Write these into proper SundialKitConnectivity/SundialKitStream documentation and link from the demo README.
Context
Examples/Sundial/WATCHCONNECTIVITY_DIAGNOSTICS.md(removed from the tree — full text in git history) captured a resolved 2025-11-10 investigation whose findings are durable and belong in the package docs (e.g. a 'WatchConnectivity behavior notes' DocC article or README section), not in an example directory.Durable findings to preserve
isReachable: falsewhile messages still deliver — WatchConnectivity determines actual reachability during the send, not at observation time.isPairedAppInstalleddegrades with Xcode installs: apps side-loaded via Xcode don't register properly with WatchConnectivity's app database (com.apple.wcdlogs 'Application context data is nil'). Status display is wrong (false), but sends still work. Production installs via the Watch app report correctly. Worth documenting as a development-build caveat.isReachable/activationStatefrom the actor immediately before sending and log the actual transport from the send result, not the predicted one.isPairedimplicitly true,pairedUpdates()unavailable, reachability reported more consistently; iOS — conservative reachability reporting.Task
Write these into proper SundialKitConnectivity/SundialKitStream documentation and link from the demo README.