545dd59c72
Nuevo crate runtime/sandokan-lifecycle: lógica pura reutilizable por cualquier supervisor de procesos (shuma, matilda Ghost, charka-shadow, mirada). Sin syscalls, sin proceso, sin UI. Módulos: - backoff — Backoff exponencial con tope - ttl — Ttl anclado a Instant - quota — ResourceQuota + check_quota + Breach + QuotaAction - restart — RestartPolicy + RestartTracker (conteo + backoff) - state — LifecycleState (Pending/Running/Exited/Failed/Killed) 15 tests verdes. cargo check --workspace verde. Variante segura de A4: se crea la library limpia sin tocar shuma-core (módulo maduro). La migración de WorkspaceManager a consumir estas primitivas queda registrada como A4.2 (refactor diferido, no urgente). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
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 aInstant.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 porinit/arje-zero.arje-cas←sha2+sled. Consumido porarje-brain-audityarje-wasm.- Brain split (DAG limpio):
arje-brain-rules(base) ←arje-brain-cognitive←arje-brain-audit←arje-brain(umbrella de integración). arje-brainre-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.