pub struct Amendment {
pub agora_governance_amendment: u32,
pub target: GovernanceLogId,
pub target_entry_hash: Sha256Hex,
pub kind: AmendmentKind,
pub authority: Option<GovernanceLogId>,
pub basis: AmendmentText,
pub note: AmendmentText,
pub rationale: Option<AmendmentText>,
pub redaction: Option<Redaction>,
pub revision: Option<Revision>,
pub update: Option<ObligationUpdate>,
}Expand description
The data of an amendment entry: what an earlier entry now means.
The target is never edited — except its data under a Redaction —
so the amendment is the whole record of the change, and both are
signed links of the same chain.
Fields§
§agora_governance_amendment: u32Always AMENDMENT_VERSION
target: GovernanceLogId§target_entry_hash: Sha256HexThe target’s entry_hash — binds this to one exact entry
kind: AmendmentKindThe governance entry that authorizes this, when one does
(e.g. GOV-2026-0005). None for a lawful-deletion redaction.
basis: AmendmentTextSection or legal basis, human-readable: "§1 (Red Team Cases Recharacterized)", "GDPR Art. 17(1)(a)". Never personal data —
and erasable, for the day that rule is broken.
note: AmendmentTextThe label readers and prompts show next to the target
rationale: Option<AmendmentText>Why, at length — note is the label, this is the reasoning.
redaction: Option<Redaction>Present iff kind is AmendmentKind::Redaction
revision: Option<Revision>Present iff kind is AmendmentKind::Revision (0.43)
update: Option<ObligationUpdate>Present iff kind is one of AmendmentKind::OBLIGATION, and of
that kind (0.72)
Implementations§
Source§impl Amendment
impl Amendment
Sourcepub fn validate(&self) -> Result<(), AmendmentError>
pub fn validate(&self) -> Result<(), AmendmentError>
Version, the shape of the texts for that version, and the redaction- and revision-shape invariants — everything checkable without the rest of the chain
Sourcepub fn text_status(
&self,
beside: Option<&AmendmentTexts>,
) -> Result<Option<AmendmentTextStatus>, AmendmentError>
pub fn text_status( &self, beside: Option<&AmendmentTexts>, ) -> Result<Option<AmendmentTextStatus>, AmendmentError>
Where each committed text stands given what is beside the entry;
None for version 1, whose texts are in the signed data.
A text that is beside the entry and is not the one committed to, or that the entry never committed to at all, is an error: someone put words next to a signed entry that the signer did not write.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Amendment
impl<'de> Deserialize<'de> for Amendment
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 Amendment
impl StructuralPartialEq for Amendment
Auto Trait Implementations§
impl Freeze for Amendment
impl RefUnwindSafe for Amendment
impl Send for Amendment
impl Sync for Amendment
impl Unpin for Amendment
impl UnsafeUnpin for Amendment
impl UnwindSafe for Amendment
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>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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.