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