pub struct Provenance {
pub actor: Did,
pub timestamp: String,
pub action_hash: Vec<u8>,
pub signature: Vec<u8>,
pub public_key: Option<Vec<u8>>,
pub voice_kind: Option<VoiceKind>,
pub independence: Option<IndependenceClaim>,
pub review_order: Option<ReviewOrder>,
}Expand description
Provenance metadata for an action.
Fields§
§actor: Did§timestamp: String§action_hash: Vec<u8>§signature: Vec<u8>§public_key: Option<Vec<u8>>Ed25519 public key (32 bytes) of the actor.
check_provenance_verifiable requires this key and performs Ed25519
signature verification over the domain-separated canonical CBOR
provenance payload. Provenance without this key fails closed.
voice_kind: Option<VoiceKind>Whether this actor is human, synthetic (AI), or a system process.
Governance surfaces accepting plural input MUST use this field to prevent synthetic voices from counting as distinct humans (CR-001 §8.3).
independence: Option<IndependenceClaim>Whether the actor claims to act independently (no undisclosed common control with other reviewers or voters).
review_order: Option<ReviewOrder>Whether this is a first-order review or derivative (echo/summary).
Implementations§
Source§impl Provenance
impl Provenance
pub fn is_signed(&self) -> bool
Sourcepub fn is_human_voice(&self) -> bool
pub fn is_human_voice(&self) -> bool
Returns true when provenance explicitly identifies this as a human
voice. None (unspecified) returns false — unattributed provenance
is never assumed to be authentic human judgment.
Sourcepub fn is_independent(&self) -> bool
pub fn is_independent(&self) -> bool
Returns true when provenance explicitly claims independence.
None (unspecified) is treated as non-independent.
Sourcepub fn is_first_order_review(&self) -> bool
pub fn is_first_order_review(&self) -> bool
Returns true when this provenance is explicitly first-order review.
None and derivative review are not equivalent to direct human review.
Sourcepub fn is_authentic_human_quorum_voice(&self) -> bool
pub fn is_authentic_human_quorum_voice(&self) -> bool
Returns true when all taxonomy fields required for a human quorum
claim are present and explicit. Cryptographic verification is performed
by the invariant engine because it needs trusted DID-resolved keys.
Sourcepub fn is_synthetic(&self) -> bool
pub fn is_synthetic(&self) -> bool
Returns true when this is explicitly a synthetic (AI-generated) voice.
Trait Implementations§
Source§impl Clone for Provenance
impl Clone for Provenance
Source§fn clone(&self) -> Provenance
fn clone(&self) -> Provenance
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 Provenance
impl Debug for Provenance
Source§impl<'de> Deserialize<'de> for Provenance
impl<'de> Deserialize<'de> for Provenance
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>,
impl Eq for Provenance
Source§impl PartialEq for Provenance
impl PartialEq for Provenance
Source§fn eq(&self, other: &Provenance) -> bool
fn eq(&self, other: &Provenance) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for Provenance
impl Serialize for Provenance
impl StructuralPartialEq for Provenance
Auto Trait Implementations§
impl Freeze for Provenance
impl RefUnwindSafe for Provenance
impl Send for Provenance
impl Sync for Provenance
impl Unpin for Provenance
impl UnsafeUnpin for Provenance
impl UnwindSafe for Provenance
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
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>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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