#125 peering recipient discovery: live ListRecipients + send picker (v0.6.22) #233
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/125-recipient-discovery"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements the greenlit design from the recipient-discovery decision memo: a live picker on the send dialog, degrading to a leak-free local-history fallback.
Backend
ListRecipientsRPC on the authenticatedcairn.peer.v1.Peeringcontrol plane. The receiver returns itsReceiversuser allow-list narrowed to residents — reusing the exact delivery gate (Recipients.Exists, #123) — as one auditedpeer-recipient-listevent. This formalizes the §4.3 enumeration a size-0PrepareTransferprobe already permits; it moves no data and leaks nothing new. Fail-closed on a disabled peer.Client.Recipients(Hello→Authenticate→ListRecipients) +RecipientsFordefault;Registry.ReceiverUsers/Peerhelpers.API + UI
GET /api/v1/peering/peers/{peer}/recipients, gated exactly like the peers list (only a permitted sender may enumerate; a peer the caller may not use is indistinguishable from one that doesn't exist). On success{recipients, live:true}; on peer-unreachable/can't-enumerate it falls back to the caller's OWN prior recipients for that peer ({live:false}) — local send history frompeer-transfers.json, never the peer's roster.<datalist>picker populated on open and on peer change, with a hint distinguishing live vs. history. Recipient field stays free-text.Tests: endpoint (live / history-fallback / fail-closed-for-non-senders),
ListRecipients(resident allow-listed / disabled-peer),ReceiverUsers. Fullgo build/vet/testgreen on the runner after protobuf regen.Closes #125.