Context: Single-node CLI usage — user creates a note on a fresh machine before a peer has connected.
Problem: replicate() returns Err(GossipsubBroadcastMessageError) because it broadcasts over gossip internally. There is no "no-op success" path. Apps that replicate on every local write must treat this as non-fatal.
Suggestion: Either succeed silently when there are no peers (data is buffered locally anyway) or expose a dedicated NoPeers error variant distinct from broadcast failures.
Workaround: match node.replicate(...).await { Ok(()) => {}, Err(_) => println!("no peers; will sync later"), }.
Severity: important
Originally logged while building apps/sovereign-notes in forge-p2p. See library-feedback.md for the full index of findings.
Context: Single-node CLI usage — user creates a note on a fresh machine before a peer has connected.
Problem:
replicate()returnsErr(GossipsubBroadcastMessageError)because it broadcasts over gossip internally. There is no "no-op success" path. Apps that replicate on every local write must treat this as non-fatal.Suggestion: Either succeed silently when there are no peers (data is buffered locally anyway) or expose a dedicated
NoPeerserror variant distinct from broadcast failures.Workaround:
match node.replicate(...).await { Ok(()) => {}, Err(_) => println!("no peers; will sync later"), }.Severity: important
Originally logged while building
apps/sovereign-notesinforge-p2p. Seelibrary-feedback.mdfor the full index of findings.