Skip to main content

AgenticSystem

Struct AgenticSystem 

Source
pub struct AgenticSystem { /* private fields */ }
Expand description

One revision of one agentic system design.

Implementations§

Source§

impl AgenticSystem

Source

pub fn draft( id: AgenticSystemId, purpose: SystemPurpose, integrator: SystemRoleId, roles: impl IntoIterator<Item = SystemRole>, participants: impl IntoIterator<Item = LogicalParticipant>, topology: impl IntoIterator<Item = CollaborationLink>, profiles: impl IntoIterator<Item = (SystemRoleId, RequestedExecutionProfile)>, ceremonies: impl IntoIterator<Item = CeremonyComposition>, supervision: SupervisionPolicy, attention: AttentionPolicy, now: OffsetDateTime, ) -> Result<Self, DomainError>

Start a design at its first revision.

Deliberately permissive about the content: a draft is something an author is still working on, and refusing to write down a half-finished system would mean the only way to get advice about one is to have finished it. What is refused here is what no revision of the design could ever repair — an empty system, or one whose own indexes disagree with themselves.

Source

pub const fn id(&self) -> &AgenticSystemId

Source

pub const fn revision(&self) -> AgenticSystemRevision

Source

pub const fn lifecycle(&self) -> AgenticSystemLifecycle

Source

pub const fn purpose(&self) -> &SystemPurpose

Source

pub const fn integrator(&self) -> &SystemRoleId

The business role that drives the system from outside it.

Source

pub const fn roles(&self) -> &BTreeMap<SystemRoleId, SystemRole>

Source

pub const fn participants(&self) -> &BTreeMap<ParticipantId, LogicalParticipant>

Source

pub fn topology(&self) -> &[CollaborationLink]

Source

pub const fn profiles( &self, ) -> &BTreeMap<SystemRoleId, RequestedExecutionProfile>

Source

pub const fn ceremonies( &self, ) -> &BTreeMap<SystemCeremonyId, CeremonyComposition>

Source

pub const fn supervision(&self) -> &SupervisionPolicy

Source

pub const fn attention(&self) -> &AttentionPolicy

What the integrator asked to be told about while it runs.

Source

pub const fn created_at(&self) -> OffsetDateTime

Source

pub const fn updated_at(&self) -> OffsetDateTime

Source

pub fn digest(&self) -> Result<AgenticSystemDigest, DomainError>

The content identity of this design.

Source

pub fn pin(&self) -> Result<SystemPin, DomainError>

This design, named the way a run refers to it.

Source

pub fn edited(&self, now: OffsetDateTime) -> Self

The same design saved as the next revision.

Editing produces a new revision rather than mutating this one, because the store’s compare-and-swap is what protects one author’s edit from another’s, and it can only compare revisions it was told about.

Source

pub fn at_revision(&self, revision: AgenticSystemRevision) -> Self

The same design, recorded at a revision the store assigned.

Source

pub fn published(&self, now: OffsetDateTime) -> Result<Self, DomainError>

Seal this revision.

Refused from anything but a draft: publishing a published revision again would either be a no-op dressed as an event or a silent overwrite of something a run may already be pinned to.

Source

pub fn deprecated(&self, now: OffsetDateTime) -> Result<Self, DomainError>

Retire this revision from new runs without invalidating the ones already sealed against it.

Source

pub fn blocking_dependencies( &self, ) -> BTreeMap<SystemCeremonyId, Vec<SystemCeremonyId>>

What each composition must wait for before it can run.

Not simply depends_on: a bounded loop declares which edge is the way back round, and that edge is cut here so a system that sends work back for revision can start at all.

Source

pub fn root_ceremonies(&self) -> Vec<&CeremonyComposition>

The compositions nothing else has to finish first.

These are where a run begins. A design where every composition waits for another has a cycle nothing bounded, and the analysis says so before a run has to discover it by starting nothing.

Source§

impl AgenticSystem

Source

pub fn analyze( &self, resolved: &BTreeMap<SystemCeremonyId, PublishedCeremonyDefinition>, ) -> AgenticSystemValidationReport

Analyse this design against the definitions its pins resolved to.

Trait Implementations§

Source§

impl Clone for AgenticSystem

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 AgenticSystem

Source§

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

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

impl<'de> Deserialize<'de> for AgenticSystem

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for AgenticSystem

Source§

impl PartialEq for AgenticSystem

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for AgenticSystem

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for AgenticSystem

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> 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.