asupersync 0.3.1

Spec-first, cancel-correct, capability-secure async runtime for Rust.
Documentation
//! Deterministic lab runtime for testing.
//!
//! The lab runtime provides:
//!
//! - Virtual time (no wall-clock dependencies)
//! - Deterministic scheduling (same seed → same execution)
//! - Trace capture and replay
//! - Schedule exploration (DPOR-style)
//! - Test oracles for invariant verification
//! - Await point tracking for cancellation injection
//! - Integrated cancellation injection with oracle verification
//! - Chaos testing with configurable failure injection
//!
//! # Quick Start
//!
//! ```ignore
//! use asupersync::lab::{LabConfig, LabRuntime};
//! use asupersync::types::Budget;
//!
//! let mut runtime = LabRuntime::new(LabConfig::new(42));
//! let region = runtime.state.create_root_region(Budget::INFINITE);
//!
//! let (task_id, _handle) = runtime
//!     .state
//!     .create_task(region, Budget::INFINITE, async { 42 })
//!     .expect("create task");
//!
//! runtime.scheduler.lock().schedule(task_id, 0);
//! runtime.run_until_quiescent();
//! ```
//!
//! # Chaos Testing
//!
//! Enable chaos injection to stress-test error handling:
//!
//! ```ignore
//! // Light chaos for CI (1% cancel, 5% delay)
//! let config = LabConfig::new(42).with_light_chaos();
//! let mut runtime = LabRuntime::new(config);
//!
//! // ... run tests ...
//!
//! // Check injection statistics
//! let stats = runtime.chaos_stats();
//! println!("Injections: {} delays, {} cancellations", stats.delays, stats.cancellations);
//! ```
//!
//! See the [`chaos`] module for detailed documentation on chaos testing.

pub mod chaos;
pub mod config;
pub mod conformal;
pub mod dual_run;
pub mod explorer;
pub mod fuzz;
pub mod http;
pub mod injection;
pub mod instrumented_future;
pub mod meta;
pub mod network;
pub mod opportunity;
pub mod oracle;
pub mod replay;
pub mod runtime;
pub mod scenario;
pub mod scenario_runner;
pub mod snapshot_restore;
pub mod spork_harness;
pub mod virtual_time_wheel;

pub use crate::util::{
    StrictEntropyGuard, disable_strict_entropy, enable_strict_entropy, strict_entropy_enabled,
};
pub use config::LabConfig;
pub use conformal::{
    CalibrationReport, ConformalCalibrator, ConformalConfig, ConformityScore, CoverageTracker,
    PredictionSet,
};
pub use dual_run::{
    CancelTerminalPhase, CancellationRecord, CaptureAnnotation, CaptureManifest, ComparisonVerdict,
    CounterTolerance, DUAL_RUN_SCHEMA_VERSION, DrainStatus, DualRunHarness, DualRunResult,
    DualRunScenarioIdentity, ExecutionInstanceId, FieldObservability, LiveExecutionProfile,
    LiveRunMetadata, LiveRunResult, LiveRunnerConfig, LiveWitnessCollector, LoserDrainRecord,
    NORMALIZED_OBSERVABLE_SCHEMA_VERSION, NormalizedObservable, NormalizedSemantics,
    ObligationBalanceRecord, OutcomeClass, Phase, PromotedExplorationScenario,
    PromotedFuzzScenario, RegionCloseRecord, RegionState as DualRunRegionState, ReplayMetadata,
    ReplayPolicy, ResourceSurfaceRecord, RuntimeKind, ScenarioFamilyId, SeedLineageRecord,
    SeedMode, SeedPlan, SemanticMismatch, TerminalOutcome, assert_dual_run_passes,
    assert_semantics, capture_cancellation, capture_loser_drain, capture_obligation_balance,
    capture_region_close, capture_terminal_from_result, capture_terminal_outcome,
    check_core_invariants, compare_observables, normalize_lab_observable, normalize_lab_report,
    normalize_live_observable, promote_exploration_report, promote_fuzz_finding,
    promote_regression_case, promote_regression_corpus, run_live_adapter,
};
pub use explorer::{
    CoverageMetrics, DporCoverageMetrics, DporExplorer, ExplorationReport, ExplorerConfig,
    RunResult, ScheduleExplorer, TopologyExplorer, ViolationReport,
};
pub use fuzz::{
    FuzzConfig, FuzzFinding, FuzzHarness, FuzzRegressionCase, FuzzRegressionCorpus, FuzzReport,
    fuzz_quick,
};
pub use http::{
    RequestBuilder, RequestTrace, TestHarness, TraceEntry, VirtualClient, VirtualServer,
};
pub use injection::{
    LabBuilder, LabInjectionConfig, LabInjectionReport, LabInjectionResult, LabInjectionRunner, lab,
};
pub use instrumented_future::{
    AwaitPoint, CancellationInjector, InjectionMode, InjectionOutcome, InjectionReport,
    InjectionResult, InjectionRunner, InjectionStrategy, InstrumentedFuture,
    InstrumentedPollResult,
};
pub use meta::{
    ALL_ORACLE_INVARIANTS, BuiltinMutation, MetaCoverageEntry, MetaCoverageReport, MetaReport,
    MetaResult, MetaRunner, builtin_mutations, invariant_from_violation,
};
pub use network::{
    Fault as NetworkFault, JitterModel, LatencyModel, NetworkConditions, NetworkConfig,
    NetworkMetrics, NetworkTraceEvent, NetworkTraceKind, Packet, SimulatedNetwork,
};
pub use oracle::{
    ActorLeakOracle, ActorLeakViolation, BayesFactor, DetectionModel, DeterminismOracle,
    DeterminismViolation, DownOrderOracle, DownOrderViolation, EProcess, EProcessConfig,
    EProcessMonitor, EValue, EvidenceEntry, EvidenceLedger, EvidenceLine, EvidenceStrength,
    EvidenceSummary, FinalizerId, FinalizerOracle, FinalizerViolation, LogLikelihoodContributions,
    LoserDrainOracle, LoserDrainViolation, MailboxOracle, MailboxViolation, MailboxViolationKind,
    MonitorResult, ObligationLeakOracle, ObligationLeakViolation, Oracle, OracleEntryReport,
    OracleReport, OracleStats, OracleSuite, OracleViolation, QuiescenceOracle, QuiescenceViolation,
    RegistryLeaseOracle, RegistryLeaseViolation, ReplyLinearityOracle, ReplyLinearityViolation,
    SupervisionOracle, SupervisionViolation, SupervisionViolationKind, SupervisorQuiescenceOracle,
    SupervisorQuiescenceViolation, TaskLeakOracle, TaskLeakViolation, TraceEventSummary,
    assert_deterministic, assert_deterministic_multi,
};
#[cfg(feature = "messaging-fabric")]
pub use oracle::{
    FabricPublishOracle, FabricPublishViolation, FabricQuiescenceOracle, FabricQuiescenceViolation,
    FabricRedeliveryOracle, FabricRedeliveryViolation, FabricReplyOracle, FabricReplyViolation,
};
pub use replay::{
    ExplorationFingerprintClass as ReplayExplorationFingerprintClass,
    ExplorationReport as ReplayExplorationReport,
    ExplorationRunSummary as ReplayExplorationRunSummary, NormalizationResult, ReplayValidation,
    SporkExplorationReport, SporkExplorationRunSummary, TraceDivergence, TraceSummary,
    classify_fingerprint_classes, compare_normalized, explore_scenario_runner_seed_space,
    explore_seed_space, explore_spork_seed_space, normalize_for_replay,
    normalize_for_replay_with_config, summarize_spork_reports, traces_equivalent,
};
pub use runtime::{
    AutoAdvanceTermination, HarnessAttachmentKind, HarnessAttachmentRef, LabConfigSummary,
    LabRunReport, LabRuntime, LabTraceCertificateSummary, SporkHarnessReport, VirtualTimeReport,
};
pub use scenario::{
    CancellationSection, CancellationStrategy, ChaosSection, FaultAction, FaultEvent, IncludeRef,
    LabSection, LatencySpec, LinkConditions, NetworkPreset, NetworkSection, Participant,
    SCENARIO_SCHEMA_VERSION, Scenario, ValidationError as ScenarioValidationError,
};
pub use scenario_runner::{
    ExplorationRunSummary, FilteredOracleReport, ScenarioExplorationResult, ScenarioRunResult,
    ScenarioRunner, ScenarioRunnerError as FrankenLabRunnerError, TraceCertificateSnapshot,
};
pub use snapshot_restore::{
    RestorableSnapshot, RestoreError, SnapshotRestore, SnapshotStats, ValidationResult,
};
pub use spork_harness::{
    HarnessError, ScenarioRunnerError, SporkAppHarness, SporkScenarioConfig, SporkScenarioResult,
    SporkScenarioRunner, SporkScenarioSpec,
};
pub use virtual_time_wheel::{ExpiredTimer, VirtualTimerHandle, VirtualTimerWheel};