pub struct ThreadGenesisRecord {
pub genesis: Option<SignedRecord>,
pub creator_authority: Vec<u8>,
pub admission: Option<SignedRecord>,
pub ownership_claims: Vec<SignedRecord>,
pub ownership_claim_admissions: Vec<SignedRecord>,
pub boundary_acceptances: Vec<SignedRecord>,
pub ownership_resolutions: Vec<SignedRecord>,
pub ownership_resolution_admissions: Vec<SignedRecord>,
}Expand description
Carries original ownership proof with the immutable creator-signed identity. The receiver independently verifies it; transport credentials never select the owning account or enroll an otherwise-untrusted account root.
Fields§
§genesis: Option<SignedRecord>§admission: Option<SignedRecord>Original account authority admitted by an independently pinned hosted executor. Does not authorize current disclosure or enroll the original account locally.
ownership_claims: Vec<SignedRecord>Exact co-signed claims, including those retained as resolved history. Unresolved conflicting claims fail closed; a transport must never select a winner or rewrite immutable genesis. Claims and their resolutions share the metadata/frame budgets below; large histories require bounded sync batches.
ownership_claim_admissions: Vec<SignedRecord>Optional independently trusted first-admission testimony matched by claim identity. Original acceptance expiry does not invalidate retained admission.
boundary_acceptances: Vec<SignedRecord>Exact heddle-original-boundary-acceptance-v1 signatures needed by this genesis/claim bundle. Fresh acceptance binds the complete streamed-original manifest and publication intent; verify the accepting authority now. It does not assert historical validity of expired/revoked original authority or change original attribution. On relay, require independently pinned, versioned admission testimony explicitly referencing the acceptance digest; acceptance alone cannot authorize another destination or a manifest subset. At most 128 distinct acceptances per transfer, each canonical record <=96KiB, within the existing metadata/frame budgets (16MiB transfer, 256KiB frame). Deduplicate identical evidence across wrappers/batches; reject conflicting or unreferenced evidence. No executor/root trust is enrolled from this field.
ownership_resolutions: Vec<SignedRecord>Original local-owner/recipient co-signed ownership resolutions in causal order. Retain losing claims as evidence. Duplicate records are idempotent; a settled claim replay cannot reopen the same conflict. Admission verifies exact Thread, Spool, conflict set and observed source frontier.
ownership_resolution_admissions: Vec<SignedRecord>Independently trusted first-admission testimony for the matching resolution identities. Current authorization governs a new admission; retained exact history is not invalidated merely by the accepting credential’s expiry.
Trait Implementations§
Source§impl Clone for ThreadGenesisRecord
impl Clone for ThreadGenesisRecord
Source§fn clone(&self) -> ThreadGenesisRecord
fn clone(&self) -> ThreadGenesisRecord
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ThreadGenesisRecord
impl Debug for ThreadGenesisRecord
Source§impl Default for ThreadGenesisRecord
impl Default for ThreadGenesisRecord
Source§fn default() -> ThreadGenesisRecord
fn default() -> ThreadGenesisRecord
Source§impl Message for ThreadGenesisRecord
impl Message for ThreadGenesisRecord
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.Source§impl PartialEq for ThreadGenesisRecord
impl PartialEq for ThreadGenesisRecord
impl StructuralPartialEq for ThreadGenesisRecord
Auto Trait Implementations§
impl Freeze for ThreadGenesisRecord
impl RefUnwindSafe for ThreadGenesisRecord
impl Send for ThreadGenesisRecord
impl Sync for ThreadGenesisRecord
impl Unpin for ThreadGenesisRecord
impl UnsafeUnpin for ThreadGenesisRecord
impl UnwindSafe for ThreadGenesisRecord
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more