Skip to main content

UploadScrubbedTimelineRequest

Struct UploadScrubbedTimelineRequest 

Source
pub struct UploadScrubbedTimelineRequest {
    pub client_operation_id: String,
    pub thread: Option<ThreadRef>,
    pub run: Option<RecordRef>,
    pub canonicalization_version: u32,
    pub run_revision: u64,
    pub snapshot: Option<UploadRunSummary>,
    pub events: Vec<UploadTimelineEvent>,
    pub origin: Option<TimelineOriginEndorsement>,
    pub acceptance: Option<TimelineAdmissionAcceptance>,
    pub first_position: u64,
    pub origin_credential_biscuit: Vec<u8>,
}
Expand description

One logical request for one Spool/Thread/run; encoded request <= 256 KiB. The full batch commits atomically. Every attempt needs a fresh method-bound Tier-1 PoP nonce/timestamp, including an identical retry. The authenticated uploader is an enrolled independent device root or active paired device as above, and its effective key must match the immutable origin uploader key. Under the Spool/Thread lock first admission enforces unique (spool_id,run_id) across ALL Threads and sharing epochs, and freezes the exact Thread, principal, actor class/effective key digest, uploader account/key and first sharing epoch. A different Thread or uploader cannot re-admit that run. Before accepting a new operation ID, check both the live run and durable keyed run fence across epochs. A purged run cannot be resurrected with a new operation ID, origin signature, or sharing re-enable. Retain the terminal operation digest fence and run HMAC fence after expiry, DISCARD or sharing purge, including runs with no policy deadline. Delete them with Thread/Spool deletion or relevant account/billing-lock deletion; the durable deletion fence then makes old attempts uniformly absent. A first upload requires a presented live origin chain at transaction time, an exact previously registered pre-expiry origin not since revoked, or fresh scoped acceptance of this request. For offline_derived, the complete verified chain MUST be presented unless that exact verified registration binding is available; acceptance never supplies provenance evidence. Later batches recheck the recorded admission basis and acceptance range, plus current uploader, sharing, billing, deletion, retention and revocation gates in the transaction.

Fields§

§client_operation_id: String

Canonical UUID; digest-bound under uploader account.

§thread: Option<ThreadRef>

Exact 32-byte Thread ID and canonical Spool UUID.

§run: Option<RecordRef>

Same Spool; run ID ASCII [A-Za-z0-9_-]{1,128}.

§canonicalization_version: u32

Exactly 1 in v1.

§run_revision: u64

Changed canonical snapshot requires a strictly larger revision. Same revision and hash is replay; same revision with another hash conflicts. An older revision cannot replace a newer snapshot.

§snapshot: Option<UploadRunSummary>

Canonical encoded summary <= 4096 bytes; required at first admission and for a zero-event run-only revision.

§events: Vec<UploadTimelineEvent>

0..64 events, consecutive from first_position. Zero requires a snapshot for a run-only revision, first_position == current next_position, and a durable run-upsert change despite accepting no event.

§origin: Option<TimelineOriginEndorsement>

Immutable across all batches.

§acceptance: Option<TimelineAdmissionAcceptance>

Required when current origin authority or a registered pre-expiry basis cannot authorize this exact batch; later ranges need fresh acceptance.

§first_position: u64

0..2^63-1; equals first event position if present.

§origin_credential_biscuit: Vec<u8>

Empty for server_issued. For offline_derived, at most 65536 raw Biscuit::to_vec() bytes. Required for the live-chain admission basis; may be empty only when an exact verified pre-expiry registration binding is available, including on a retry or with fresh acceptance. If present, verify it against the signed identity. This authorization evidence is excluded from the logical request digest.

Trait Implementations§

Source§

impl Clone for UploadScrubbedTimelineRequest

Source§

fn clone(&self) -> UploadScrubbedTimelineRequest

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for UploadScrubbedTimelineRequest

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for UploadScrubbedTimelineRequest

Source§

fn default() -> UploadScrubbedTimelineRequest

Returns the “default value” for a type. Read more
Source§

impl Message for UploadScrubbedTimelineRequest

Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
Source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
Source§

fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message to a buffer. Read more
Source§

fn encode_to_vec(&self) -> Vec<u8> ⓘ
where Self: Sized,

Encodes the message to a newly allocated buffer.
Source§

fn encode_length_delimited( &self, buf: &mut impl BufMut, ) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
Source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘ
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
Source§

fn decode(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes an instance of the message from a buffer. Read more
Source§

fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes a length-delimited instance of the message from the buffer.
Source§

fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
Source§

fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
Source§

impl PartialEq for UploadScrubbedTimelineRequest

Source§

fn eq(&self, other: &UploadScrubbedTimelineRequest) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for UploadScrubbedTimelineRequest

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more