syn001.md

2.4 KB · raw

rendered · source

SYN-001

Summary

SYN-001 is the Peach Sync blocker that kept desktop native sync dormant.

The original bug was that the Rust native host used an all-zero Noise NK static private key on the responder path. That made every install present the same responder identity, which defeats the peer-authentication property sync relies on.

That original all-zero-key bug has been fixed in the SYN-001 sprint. The host now has a persisted per-install X25519 identity, advertises only the public key, uses the real identity in responder and initiator Noise paths, and has Rust tests for real-key handshakes and wrong-public-key rejection.

Completed So Far

Current Safety Gate

The risky path is still not shipped:

Remaining Before Re-Enabling

  1. Finish the native-host audit checklist: private-key handling/logging, identity file permissions, mDNS TXT contents, random-port behavior, trusted-device lifecycle, pairing flow, error surfaces, and rate limits.
  2. Build the real sync payload flow: length-prefixed encrypted JSON messages, vault manifest/diff exchange, merge rules, locked-vault cancellation, and Pro/background gates.
  3. Add native-host installer manifest generation and only then add nativeMessaging to the browser manifests.
  4. Add manual E2E coverage with two desktop installs before marking SYN-001 resolved.

Until those are complete, sync should remain gated and dormant.