Repository navigation
docs(rfc): core-resolved public profiles - #1709
Open
corey-hathaway wants to merge 29 commits into
Open
corey-hathaway wants to merge 29 commits into
corey-hathaway wants to merge 29 commits into
Conversation
A person's public profile is one dotNS text record, `profile`, under their own name: a SCALE record of typed entries (avatar as a Bulletin CID with its format, display name, pinned items, feeds). The core resolves it with the walk it already makes for product manifests, fetches the avatar bytes through the host's preimage backend, checks them against the CID, and answers the host with the profile, a definite absence, or a failure. Hosts decode nothing and fetch from no gateway. The call is host-facing only; no product can reach it. Who writes the record, under which permission, is left to a separate RFC. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
Bundle size reportCompared with
WebAssembly modules
No file changed size. Commit: c5d3303 |
Contributor
|
CI Status: 24 required jobs green, 16 passed and 8 skipped by path filter. All job results
Signing credentials: valid as of 2026-11-03 Commit |
…ne collides with Optional Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
pgherveou
reviewed
Oct 28, 2026
…n<PublicProfile>, _> Applies the first review: - The record is Vec<Skippable<ProfileEntry>>, an indexed enum inside a length-prefixed wrapper a reader steps over when it cannot decode it. Same bytes as frame_support's WrapperKeepOpaque<T>. An index table replaces string kinds, with the rule for allocating the next one. - The host call returns Result<Option<PublicProfile>, PublicProfileError>. The avatar is a reference with its bytes optional, so "avatar the core could not fetch" is distinct from "no avatar" and a host keeps its copy when Bulletin retention lapses. - The avatar format stays declared, as the product-manifest RFC requires for an icon. - The core does no image work; hosts keep and resize the bytes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ord cache and host image cache
…sult Replace hand-rolled selectors, word padding and return decoders with sol! interfaces; read_view takes a SolCall and decodes with validation. ReviveApi_call args and ContractResult use derived SCALE codecs. Closes #1842.
…ore-resolved-public-profiles
…-public-profiles # Conflicts: # rust/crates/truapi/src/host_logic/dotns_gateway.rs # rust/crates/truapi/src/runtime/identity.rs
pgherveou
approved these changes
Nov 3, 2026
This branch has not been deployed
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.
RFC: Core-resolved public profiles
Summary
A person's public profile is one dotNS text record,
profile, under their own name: a SCALE record of typed entries (avatar as a Bulletin CID with its format, display name, pinned items, feeds). The core resolves it with the walk it already makes for product manifests, fetches the avatar bytes through the host's preimage backend, checks them against the CID, and answers the host with the profile, a definite absence, or a failure. Hosts decode nothing and fetch from no gateway. The call is host-facing only; no product can reach it.Checklist
docs/rfcs/core-resolved-public-profiles.md(no number)NativeTrUApiHostRuntime, not a product trait. Implementation follows in a separate PR.rfcMotivation
Contacts are letter tiles because no record a person can publish is read by every host. Seity now writes one under the person's name (seity
cbh/profile-envelope, proven on paseo-next-v2 on 26 October). Reading it in the core gives one decoder for iOS, Android and dotli, and keeps avatar fetches off any HTTP gateway, which would otherwise learn which contacts a user looks at. Who may write the record, under which permission and who pays, is deliberately left to a follow-up RFC.🤖 Generated with Claude Code