Cbh/seity contacts - #1009
Merged
Merged
Cbh/seity contacts#1009
Conversation
…s by name
On top of `profile.present`:
- `disclose({ reference })` (method 1, App only) stores the user's own
reference with the product that disclosed it; `retract()` (2) withdraws
it, and only the discloser may.
- `presentContact({ peerIdentity })` (3) names a chat contact; the host
looks up the reference that contact's host sent and hands it to the
existing `ProfilePlatform::present_profile`. The product never holds a
contact's reference, so it cannot read, keep, forward or substitute it.
Both kinds of reference live in core storage: `ProfileDisclosure`
(wallet-owned) and `ProfileReferencesReceived { product_id }` (cleared with
the chat product, like its roster). The chat relay that fills the latter
comes next; its write helper is here and tested.
The CLI installs a presenter that records each presentation to
`TRUAPI_PROFILE_LOG` as a SHA-256 and format prefix, never the reference.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The Chat v2 half of profile disclosure, built on the actor's host-private
outbox that payments and rich files already use:
- Wire: `ProfileReference { discloser_product_id, reference: Option }` at
V2 content index 21 (a new shared wire index; needs agreeing with native
Chat before it ships).
- Send: `publish_profile_reference`, run on Initialize, seals one message
per ready peer whose watermark differs from the user's disclosure, as an
`OutgoingKind::ProfileReference` the product submits as opaque ciphertext.
The watermark (trailing `profile_shared`, absent from older snapshots)
advances at queue time; a withdrawal is sent to peers that hold one.
- Receive: the frame is classified and screened, stored per peer in
`ProfileReferencesReceived` for the chat product, and cut from the opened
plaintext (forcing a re-encode), so the product never sees it. Only live
frames update it, never compacted history. Products cannot prepare one.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The RFC for `disclose` / `retract` / `presentContact` and the Chat v2 relay on the host-private outbox, unnumbered and in draft. Its open questions are the known gaps of the prototype: the content-type index, several disclosing products, consent, other devices, reconcile timing, and where references are resolved. Each gap is also marked where it lives in the code. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
|
CI Status: not green, 2 items need attention.
All job results
Signing credentials: failure as of 2026-09-25, a release may fail Commit |
Contributor
iOS simulator previewBuilt from gh run download 36252697313 --name simulator-preview-e89fd093a
unzip polkadot-app-*.app.zip
xcrun simctl install booted polkadot-app.app
xcrun simctl launch booted io.parity.polkadotapp.developOr download it in a browser, which arrives as a zip wrapping An arm64 simulator slice, so it needs an Apple Silicon Mac and does not |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Seity contacts layer on top of #1001.
Adds
profile.disclose({ reference })/profile.retract()andprofile.presentContact({ peerIdentity }): a product discloses one reference to the user's chat contacts, and a chat product shows a contact's profile by naming the contact. The host relays and stores references; no product holds another user's.disclose/retract(methods 1-2, App only) store the reference in core storage (ProfileDisclosure). Only the discloser may retract.ProfileReferencesReceived) and strips the frame from the opened plaintext.presentContact(method 3) substitutes the stored reference into the existingProfilePlatform::present_profile. Host adapters are unchanged.TRUAPI_PROFILE_LOG(hash only).Open questions (the index, several disclosing products, consent, other devices) are in
docs/rfcs/profile-disclosure.md.Tests:
disclose/retract/presentContact runtime tests, relay send/receive actor tests, codec round-trip, regenerated goldens.
cargo test -p truapi -p truapi-chat-v2 -p truapi-codegen -p truapi-platform -p truapi-server -p truapi-host-cliandbun testinjs/packages/truapi-hostpass.Consumed by the dotli Seity layer (#287 follow-up) and Seity's Share with contacts.