# runtime/ — Infraestructura de ejecución **Propósito.** Servicios cross-cutting que el Init y los módulos consumen: bus IPC interno, content-addressed storage, sandbox WASM, rule engine + audit log, y un ente de smoke test. ## Crates | crate | tipo | rol | | ---------------------- | ---- | -------------------------------------------------- | | `arje-bus` | lib | Unix SOCK_STREAM + postcard framing | | `arje-cas` | lib | Content-addressed storage SHA-256: blobs + audit | | `arje-wasm` | lib | Encarna `Payload::Wasm` vía `wasmi` | | `arje-brain-rules` | lib | Motor determinista: rules + engine O(1) + dispatch | | `arje-brain-cognitive` | lib | Observer estadístico + crystallize de patrones | | `arje-brain-audit` | lib | Audit chain con hashes anclados al CAS | | `arje-brain` | lib | Integración: introspect + autopromote + metrics | | `arje-echo` | bin | Ente prueba — provee `Capability::Endpoint(echo)` | | `sandokan-lifecycle` | lib | Primitivas de lifecycle agnósticas (ver abajo) | ## sandokan-lifecycle Library de primitivas de ciclo de vida agnósticas (sin syscalls, sin proceso, sin UI — solo cálculo). Consumible por cualquier supervisor: `shuma`, `matilda` Ghost, `charka-shadow`, `mirada`. - `Backoff` — backoff exponencial con tope. - `Ttl` — time-to-live anclado a `Instant`. - `ResourceQuota` + `check_quota` — cuotas de recursos + breaches. - `RestartPolicy` + `RestartTracker` — restart con conteo + backoff. - `LifecycleState` — máquina de estados (Pending/Running/Exited/Failed/Killed). 15 tests verdes. **Pendiente (A4.2)**: migrar `shuma-core::WorkspaceManager` para que consuma estas primitivas en lugar de su implementación inline. ## Dependencias - `arje-bus` ← `tokio` + `postcard`. Consumido por `init/arje-zero`. - `arje-cas` ← `sha2` + `sled`. Consumido por `arje-brain-audit` y `arje-wasm`. - **Brain split (DAG limpio)**: `arje-brain-rules` (base) ← `arje-brain-cognitive` ← `arje-brain-audit` ← `arje-brain` (umbrella de integración). - `arje-brain` re-exporta la API de los 3 sub-crates para los consumidores históricos (`arje-zero`, `chasqui`). ## Invariantes - Bus: framing length-prefixed, sin re-orden; un cliente=una sesión. - CAS: addresses inmutables; un blob = sha256(content) único. - Audit: cada evento del bus se hash-encadena al log en CAS. ## Estado LOC ~3.4K, tests parciales. Brain tiene 11 TODOs (reglas declarativas complejas pendientes). Ver `docs/changelog/runtime.md`.