Skip to content

fix(mobile): hydrate peer presence before live heartbeat - #25

Merged
BrianInAz merged 4 commits into
mainfrom
fix/ios-peer-presence-hydration
Aug 11, 2026
Merged

fix(mobile): hydrate peer presence before live heartbeat#25
BrianInAz merged 4 commits into
mainfrom
fix/ios-peer-presence-hydration

Conversation

@BrianInAz

@BrianInAz BrianInAz commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • hydrate tracked iOS peer presence immediately through the existing authenticated kind 20001 relay query
  • preserve live WebSocket updates as the fast path with race-safe snapshot merging
  • refresh tracked peers every 60 seconds and rehydrate immediately after reconnect
  • retain the existing public Map<String, String> provider contract and unchanged widgets
  • add deterministic regression coverage, screenshots, the Beads execution record, and an as-built repository document

Root cause

iOS previously consumed only ephemeral live presence events. Events received before a DM pubkey was tracked were discarded, and ephemeral events are not stored or replayed. An already-online peer therefore remained gray until its next heartbeat. Relay connectivity and peer presence are separate signals.

TDD and validation

  • presence provider: 15/15 passed
  • just mobile-check: passed
  • full mobile suite: 1,107 passed, 1 intentional skip, 0 failed
  • full Hermit-backed repository just ci: passed after the branch was refreshed onto current main
  • formatting, diff, scope, lockfile, untracked-file, and changed-file secret checks: passed
  • lockfiles: unchanged
  • isolated iOS 26.5 simulator acceptance: 5/5 cold launches and 5/5 foreground reconnect cycles showed both expected peer dots green within five seconds

Simulator acceptance used only the worktree-specific debug bundle. The existing public Home Lab CA was trusted only in that isolated simulator after explicit approval. The unbacked physical iOS 27 beta phone was not touched. One final cold-launch proof will be repeated from the merged main build.

Promotion prerequisites resolved

The branch was merged forward, without force-pushing, through signed-off commit e3b5e4cd9c92 onto verified main commit f73b2bdd5d95.

Exact-SHA post-merge validation for the integration base is green: CI 31535160441, Sprig 31535160539, and Helm 31535160483.

Evidence and tracking

Scope boundaries

No Desktop, CLI, relay, Hermes runtime, heartbeat, TTL, authentication, membership, or protocol changes are included. No peer identity, private key, or private device identifier is hardcoded or documented.

Signed-off-by: Brian Charbonneau <github@briancharbonneau.com>
@cursor

cursor Bot commented Aug 10, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

Signed-off-by: Brian Charbonneau <github@briancharbonneau.com>
@BrianInAz
BrianInAz marked this pull request as draft August 10, 2026 08:34
…-hydration

Signed-off-by: Brian Charbonneau <github@briancharbonneau.com>
Signed-off-by: Brian Charbonneau <github@briancharbonneau.com>
@BrianInAz
BrianInAz marked this pull request as ready for review August 11, 2026 21:29
@BrianInAz
BrianInAz merged commit 79bfb1d into main Aug 11, 2026
19 checks passed
@BrianInAz
BrianInAz deleted the fix/ios-peer-presence-hydration branch August 11, 2026 22:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant