Skip to main content

ProtocolModel

Enum ProtocolModel 

Source
#[repr(u8)]
pub enum ProtocolModel { Failure = 1, Timing = 2, Trust = 3, Event = 4, Media = 5, }
Expand description

The five formal protocol models of ELARA.

Every module must be explainable through these models. If a module cannot answer the model’s core question correctly, it is not part of ELARA core.

Variants§

§

Failure = 1

Failure Model: Failure is distortion, not termination.

Core question: “What is your failure model?” Valid answer: Distortion, not termination

ELARA assumes all failure conditions are normal:

  • Extreme jitter
  • Arbitrary packet loss
  • Reordering, duplication
  • Network partition
  • Byzantine nodes
  • Device death
  • Clock drift
  • Server death
§

Timing = 2

Timing Model: Time is local. Order is reconstructed.

Core question: “Whose clock do you depend on?” Valid answer: Local only, reconstructed order

Properties:

  • No protocol decision depends on wall-clock correctness
  • Causality > Timestamp
  • Liveness > Consistency
  • Reconstruction > Synchronization
§

Trust = 3

Trust Model: Identity is cryptographic, not topological.

Core question: “Where does trust come from?” Valid answer: Cryptographic continuity

Trust is built from:

  • Continuity of keys
  • Behavior history
  • Event lineage

NOT from: IP, server, TLS channel, login session

§

Event = 4

Event Model: Event is truth. State is a story we tell about it.

Core question: “Where is your event-truth?” Valid answer: In signed, immutable events

Properties:

  • Append-only reality
  • Forks are legal
  • Convergence is negotiated, not enforced
  • History > Snapshot
§

Media = 5

Media Model: Media is perception, not data.

Core question: “If media has holes, what still lives?” Valid answer: Perception continues

Properties:

  • Silence is valid media
  • Approximation is first-class
  • Prediction is legal
  • Pipelines support stretching, concealment, hallucination

Implementations§

Source§

impl ProtocolModel

Source

pub fn code(&self) -> &'static str

Get the model code (e.g., “MODEL-1”)

Source

pub fn name(&self) -> &'static str

Get the model name

Source

pub fn axiom(&self) -> &'static str

Get the model axiom

Source

pub fn compliance_question(&self) -> &'static str

Get the core compliance question for this model

Source

pub fn valid_answer(&self) -> &'static str

Get the valid answer pattern for this model

Source

pub fn related_invariant(&self) -> Invariant

Get the related Hard Invariant

Source

pub fn all() -> &'static [ProtocolModel]

Get all models

Trait Implementations§

Source§

impl Clone for ProtocolModel

Source§

fn clone(&self) -> ProtocolModel

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ProtocolModel

Source§

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

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

impl Display for ProtocolModel

Source§

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

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

impl Hash for ProtocolModel

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ProtocolModel

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ProtocolModel

Source§

impl Eq for ProtocolModel

Source§

impl StructuralPartialEq for ProtocolModel

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.