1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! HA / scaling overlays on top of [`DaemonRuntime`](crate::compute::DaemonRuntime).
//!
//! Three coordination primitives implemented by the core compute
//! layer (`adapter::net::compute::{replica_group, fork_group,
//! standby_group}`), wrapped here with SDK-ergonomic surfaces:
//!
//! - [`ReplicaGroup`] — N interchangeable copies of a daemon.
//! Deterministic identity per replica index; LB-routed inbound
//! events; auto-replacement on node failure.
//! - [`ForkGroup`] — N independent daemons forked from a common
//! parent at a specific sequence. Unique identities, shared
//! ancestry via `ForkRecord`.
//! - [`StandbyGroup`] — active-passive replication. One active
//! processes events; N−1 standbys hold snapshots and catch up
//! via `sync_standbys`; on active failure `promote` picks the
//! most-synced standby.
//!
//! Each group takes a `&DaemonRuntime` (to reach the shared
//! scheduler / registry / factory map) and a `kind` string that
//! must have been registered via
//! [`DaemonRuntime::register_factory`](crate::compute::DaemonRuntime::register_factory).
//! The kind factory is invoked once per group member — at spawn,
//! on `scale_to` growth, and on `on_node_failure` replacement.
//!
//! # Thread safety
//!
//! Each group wraps its inner core state in an `Arc<Mutex<_>>`, so
//! all SDK methods take `&self`. Contention is negligible because
//! group operations happen on seconds-to-minutes timescales
//! (scale-ups, failover); event routing (`route_event`) reads the
//! coordinator's live-member snapshot without contending on a hot
//! path.
pub use ;
pub use GroupError;
pub use ;
pub use ;
pub use ;