Skip to main content

AuditOutcome

Struct AuditOutcome 

Source
pub struct AuditOutcome {
Show 16 fields pub command: Vec<String>, pub integration: &'static str, pub file_id: String, pub lease_id: Option<String>, pub verdict: String, pub version_before: Option<String>, pub version_after: Option<String>, pub modified_time_before: Option<String>, pub modified_time_after: Option<String>, pub backup_location: Option<String>, pub backup_sha256: Option<String>, pub backup_size: Option<u64>, pub auth_policy: Option<String>, pub restored_from_lease_id: Option<String>, pub superseded_lease_id: Option<String>, pub error: Option<String>,
}
Expand description

One event for the Drive write-lease audit trail (ADR-0080 §11).

Covers drive lease acquire succeeding or refusing, or a leased write’s own intent/outcome pair — a single shape for all of them, the same way DriveMutationOutcome is one shape for every mutating verb. The verdict field (kebab-case, mirroring every other *Result::log_status in this codebase) is what distinguishes them, not a separate Rust type per event kind.

Fields§

§command: Vec<String>

The audited command, e.g. ["drive", "lease-acquire"] or ["drive", "edit"] — becomes the record’s command, mirroring DriveMutationOutcome::operation.

§integration: &'static str

Which integration this event belongs to ("drive" today; ADR-0080 §11 names Gmail/Atlassian as later, additive extensions).

§file_id: String

The Drive file id the lease/write concerns.

§lease_id: Option<String>

The lease token, once one exists. Absent for an acquire attempt that never reached minting one (denied/unavailable/refused before a token was created).

§verdict: String

What happened, kebab-case: "acquired", "refused-native-document", "denied", "unavailable", "failed" for an acquire attempt; "pending" (the write-ahead intent), then "allowed" or "failed" (the outcome), or a single "refused-no-lease", "refused-lease-expired", "refused-lease-wrong-file", "refused-lease-stale" / "failed" for a leased write that never reached its mutating call (crate::drive::lease::check::verdict). Free-form rather than a closed enum, like every other *Result::log_status in this codebase — a later integration’s verdict vocabulary doesn’t need a schema change here.

§version_before: Option<String>

The file’s Drive version before the event, when relevant.

§version_after: Option<String>

The file’s Drive version after, when relevant (e.g. the version an acquire recorded into the ledger, or a leased write’s post-write version).

§modified_time_before: Option<String>

modifiedTime paired with Self::version_before.

§modified_time_after: Option<String>

modifiedTime paired with Self::version_after.

§backup_location: Option<String>

Where an acquire’s backup landed: a local path for a byte backup, or the backup copy’s own file id for a native-document backup.

§backup_sha256: Option<String>

SHA-256 of a byte backup, for later integrity verification. None for a native-document backup (verified by Drive’s own copy semantics instead) and for anything that isn’t an acquire.

§backup_size: Option<u64>

Size in bytes of a byte backup.

§auth_policy: Option<String>

Which authentication policy (ADR-0080 §7) an acquire satisfied — "device-owner" or "biometrics-only".

§restored_from_lease_id: Option<String>

drive lease restore only: the backup lease’s token the restore read from — distinct from Self::lease_id, the fresh token the restore itself minted before writing (ADR-0080 §10/§11: “the restore is audit-logged carrying both tokens”). None for every other event.

§superseded_lease_id: Option<String>

The lease this event ended early, when it ended one as a side effect of doing something else: drive lease acquire’s supersede, set only by drive lease restore naming the backup token it restores from (issue #1685). Distinct from Self::lease_id, the token the acquire itself minted, and from a drive lease release record, whose released token is its lease_id. None for every other event.

A field rather than a verdict — unlike the headless waiver, which is a flag and so became acquired-headless-waiver — because this carries an identifier, exactly as Self::restored_from_lease_id does, and a third verdict axis would multiply combinatorially with the existing -headless-waiver/-backup-orphaned suffixes.

§error: Option<String>

The error, when the event itself failed (an API/filesystem/ledger error — distinct from an ordinary refusal, which is a verdict, not an error).

Trait Implementations§

Source§

impl Clone for AuditOutcome

Source§

fn clone(&self) -> Self

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 AuditOutcome

Source§

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

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

impl Default for AuditOutcome

Source§

fn default() -> Self

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

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<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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> 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> 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<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