pub struct Attestation {
pub binary_sha256: String,
pub config_sha256: String,
pub attested_at: String,
pub drift: Option<DriftMark>,
}Fields§
§binary_sha256: StringSHA-256 of the running binary at registration/heartbeat time.
config_sha256: StringSHA-256 of the active role file (empty when the role is built-in).
attested_at: String§drift: Option<DriftMark>Set when this attestation replaced a different one, i.e. drift was
observed and audited at attested_at. Sticky: heartbeat persists the
freshly observed state, so every later heartbeat is clean by
construction and auto-clearing would make block_on_drift expire
after a single beat. Cleared ONLY by
lean-ctx agent ack-drift <agent-id> --evidence <evidence>, which
binds the acknowledgement to the exact evidence the operator
reviewed. Resuming a suspended identity deliberately does not clear
it: un-suspending an identity after an unrelated incident must never
silently sign off attestation drift nobody looked at.
default on purpose: a pre-Phase-18 registry has no drift key and
must keep round-tripping as “no unacknowledged drift”.
Trait Implementations§
Source§impl Clone for Attestation
impl Clone for Attestation
Source§impl Debug for Attestation
impl Debug for Attestation
Source§impl<'de> Deserialize<'de> for Attestation
impl<'de> Deserialize<'de> for Attestation
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Forget for Attestation
impl Freeze for Attestation
impl Move for Attestation
impl RefUnwindSafe for Attestation
impl Send for Attestation
impl Sync for Attestation
impl Unpin for Attestation
impl UnsafeUnpin for Attestation
impl UnwindSafe for Attestation
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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