obzenflow_core 0.2.1

Core domain layer for ObzenFlow - pure abstractions with minimal dependencies
Documentation
// SPDX-License-Identifier: MIT OR Apache-2.0
// SPDX-FileCopyrightText: 2025-2026 ObzenFlow Contributors
// https://obzenflow.dev

#![doc = include_str!("../README.md")]

pub mod ai;
pub mod build_info;
pub mod composite;
pub mod config;
pub mod contracts;
pub mod effect_binding;
pub mod error;
pub mod event;
pub mod http_client;
pub mod id;
pub mod ingress;
pub mod journal;
pub mod metrics;
pub mod time;
pub mod web;

// Re-export key types for convenience
pub use effect_binding::{
    BindingEvidenceDigest, BindingEvidenceError, BoundedBindingEvidence, EffectBindingIdentity,
    MAX_BINDING_EVIDENCE_BYTES,
};
pub use error::Result;
pub use event::chain_event::ChainEvent;
pub use event::context::runtime_context;
pub use event::context::MiddlewareExecutionScope;
pub use event::event_envelope::EventEnvelope;
pub use event::EventId;
pub use event::{AdmissionSeq, EventType, JournalWriterId, ReaderGeneration, WriterId};
pub use journal::journal_error::JournalError;
pub use journal::journal_owner::JournalOwner;
pub use journal::Journal;

// The derive generates paths through `::obzenflow_core`, so make that name
// resolve inside this crate too (the serde-style self-alias trick).
extern crate self as obzenflow_core;

// Re-export schema types (FLOWIP-082a; EffectOutcomeFacts FLOWIP-120m;
// stage fact sets and membership proofs FLOWIP-120z)
pub use event::schema::{
    assert_distinct_stage_fact_set, DeclaredStageFactSet, EffectOutcomeFacts, Member,
    MiddlewareContextKey, OneFactStageOutput, StageFactSet, StageOutputFacts, StageOutputs,
    SubsetOf, TypedFact, TypedFactSet, TypedFactSetError, TypedFactType, TypedPayload,
};

// Re-export typed IDs
pub use id::{CycleDepth, FlowId, JournalId, SccId, StageId, StageKey, SystemId};

// Re-export Ulid for convenience since it's used in many IDs
pub use ulid::Ulid;

// Re-export chrono so macro expansions can reference timestamps without
// requiring downstream crates to depend on chrono directly (FLOWIP-095a).
pub use chrono;

// Re-export core contract types (FLOWIP-090c)
pub use contracts::{
    Contract, ContractContext, ContractEventScope, ContractEvidence, ContractReadContext,
    ContractResult, ContractState, ContractViolation, ContractWriteContext, DeliveryContract,
    DivergenceContract, DivergenceThresholds, HashMismatch, SourceContract, TransportContract,
    ViolationCause,
};