Skip to main content

Crate obzenflow_core

Crate obzenflow_core 

Source
Expand description

§ObzenFlow Core

Core defines the domain types and contracts shared by the framework. Application authors access these through obzenflow::schema, obzenflow::effects, and the other public facade modules.

Core is the innermost layer. It has no dependency on Runtime, Adapters, flow construction, or Infra. The companion obzenflow_core_derive crate generates implementations of Core’s schema contracts at compile time.

§Responsibilities

  • Events, typed payloads, fact carriers, identifiers, and causal context.
  • Journal append and read contracts, factories, archives, and run manifests.
  • Delivery, effect, and stage-verification contracts.
  • Measurement snapshots and the MetricsSnapshotExporter publication port.
  • HTTP, web endpoint, and control-policy ports implemented by outer layers.

Runtime executes flows through these contracts. Storage, network clients, servers, and reporting implementations belong to outer layers.

§Record contract

A logical journal record contains envelope and payload. Event authors supply envelope.provenance.event; the journal assigns envelope.provenance.journal. Application facts preserve their JSON values, including scalars, arrays, and null.

Execution accounting and causal identity belong to provenance. Optional envelope.observability attachments carry measurements and their capture stamps. Changing observation retention does not remove payloads, effect evidence, delivery receipts, or atomic membership. Missing measurements remain distinct from measured zero.

JOURNAL_SCHEMA_VERSION is the shared authority for records, framing, and manifests. The current schema is 5.0; older archives require a new recording. Infra owns the encoding described in the journal format reference.

§License

Dual-licensed under MIT OR Apache-2.0. See LICENSE-MIT and LICENSE-APACHE.

Re-exports§

pub use effect_binding::BindingEvidenceDigest;
pub use effect_binding::BindingEvidenceError;
pub use effect_binding::BoundedBindingEvidence;
pub use effect_binding::EffectBindingIdentity;
pub use effect_binding::MAX_BINDING_EVIDENCE_BYTES;
pub use error::Result;
pub use event::chain_event::ChainEvent;
pub use event::context::MiddlewareExecutionScope;
pub use event::envelope::EventEnvelope;
pub use event::journal_record::JournalRecord;
pub use event::payloads::JournalPayload;
pub use event::EventId;
pub use event::AdmissionSeq;
pub use event::EventType;
pub use event::JournalWriterId;
pub use event::ReaderGeneration;
pub use event::WriterId;
pub use journal::journal_error::JournalError;
pub use journal::journal_owner::JournalOwner;
pub use journal::Journal;
pub use event::schema::DeclaredStageFactSet;
pub use event::schema::EffectOutcomeFacts;
pub use event::schema::Member;
pub use event::schema::MiddlewareContextKey;
pub use event::schema::OneFactStageOutput;
pub use event::schema::StageFactSet;
pub use event::schema::StageOutputFacts;
pub use event::schema::StageOutputs;
pub use event::schema::SubsetOf;
pub use event::schema::TypedFact;
pub use event::schema::TypedFactSet;
pub use event::schema::TypedFactSetError;
pub use event::schema::TypedFactType;
pub use event::schema::TypedPayload;
pub use id::CycleDepth;
pub use id::FlowId;
pub use id::JournalId;
pub use id::SccId;
pub use id::StageId;
pub use id::StageKey;
pub use id::SystemId;
pub use contracts::Contract;
pub use contracts::ContractContext;
pub use contracts::ContractEventScope;
pub use contracts::ContractEvidence;
pub use contracts::ContractReadContext;
pub use contracts::ContractResult;
pub use contracts::ContractState;
pub use contracts::ContractViolation;
pub use contracts::ContractWriteContext;
pub use contracts::DeliveryContract;
pub use contracts::DivergenceContract;
pub use contracts::DivergenceThresholds;
pub use contracts::HashMismatch;
pub use contracts::SourceContract;
pub use contracts::TransportContract;
pub use contracts::ViolationCause;
pub use chrono;

Modules§

ai
Provider-agnostic AI contracts and utilities.
build_info
Build and version information.
composite
Calculates a composite group’s status from its member stages.
config
Configuration vocabulary (FLOWIP-010).
contracts
effect_binding
Durable, credential-free effect-binding evidence types (FLOWIP-132a).
error
Common error handling types for ObzenFlow
event
Core event types
http_client
Core outbound HTTP client abstractions.
id
Strongly typed identifiers for core domain entities
ingress
Hosted-ingress admission and ingestion.
journal
Core journal abstractions
metrics
Metrics traits and types for the core domain
time
Time-related types for consistent duration handling
web
Portable HTTP endpoints, managed surfaces, requests and responses. Listener construction and hosting policy belong to infrastructure.

Macros§

stage_fact_set
Declare a stage fact set in type position (FLOWIP-120z):

Structs§

Ulid
A Ulid is a unique 128-bit lexicographically sortable identifier

Derive Macros§

EffectOutcomeFacts
Derive an effect outcome carrier (FLOWIP-120m).
StageOutputFacts
Derive a pure stage output carrier (FLOWIP-120z).