//! Portable (host-architecture-independent) sentry state types.
//!
//! The rest of [`crate::sentry`] is `cfg(linux + x86_64)` — it is the no-virt
//! process-isolation backend and is full of host syscalls, SUD, and `libc`. But two
//! of its submodules are *pure* Rust (`std` + [`crate::snapshot_frame`], no
//! host-syscall / SUD / `libc`):
//!
//! * [`state_snap`] — Stage-1 "C0": the versioned, little-endian, bounds-checked
//! `state.snap` on-disk container plus the shared identity/fd record types.
//! * [`proctree`] — Stage-1 "C2a": the supervisor-owned guest process tree (vpid
//! identity + topology) the state snapshot serializes.
//! * [`netstack`] — the owned loopback byte-stream netstack snapshot codec.
//!
//! They live here, OUTSIDE the Linux gate, so they compile and unit-test on every
//! host (mac/CI), not only the Linux/x86_64 box. That lets the native-execution-VM
//! multi-process warm-restore (#36) and disk-persistence (#30/C4) logic — which is
//! built on these types — be developed with fast local feedback instead of being
//! box-only. The files physically remain under `src/sentry/` (referenced via
//! `#[path]`) and are re-exported from [`crate::sentry`] (`pub use
//! crate::sentry_portable::{netstack, proctree, state_snap}`), so every in-sentry path
//! (`super::state_snap`, `crate::sentry::proctree`, …) is unchanged on Linux.