# init/ — Init (PID 1) y encarnación Linux **Propósito.** `arje-zero` arranca como PID 1 del fractal. Provee el bucle primordial (reap + bus + handshake), bootstrap del kernel surface, encarnación de Cards en procesos aislados con namespaces + cgroups, y snapshot/restore del grafo. ## Crates | crate | tipo | rol | | ---------------- | ------- | ----------------------------------------------------- | | `arje-zero` | binario | PID 1: reap + handshake server + bus dispatcher | | `arje-kernel` | lib | `bootstrap_kernel_surface`, subreaper, SIGCHLD/uevent | | `arje-soma` | lib | Wrapper 44 LOC sobre `arje-incarnate` (compat API) | | `arje-incarnate` | lib | `clone(2) + namespaces + cgroup + rlimits + cpu` | | `arje-snapshot` | lib | `FractalSnapshot` JSON: checkpoint del grafo Cards | ## Dependencias - `arje-kernel` ← `nix`, `libc`, syscalls Linux puras. - `arje-incarnate` reusable: shuma (sandboxes) y supervisores no-PID-1. - Consume `protocol/` (handshake server, brahman-net opcional). ## Boot path 1. Kernel pasa control → `arje-zero` arranca como `/sbin/init`. 2. Levanta sockets: `/run/brahman/bus`, `/run/brahman/handshake`. 3. Lee `Card` semilla (`seeds/arje-{minimal,host,prod}.card.json`). 4. Para cada `genesis` child Card: `incarnate(card)` → spawn aislado. 5. Reap loop atiende SIGCHLD; bus loop atiende anuncios/invokes. ## Estado Funciona bare metal + QEMU + initramfs (ver `docs/arje-boot.md`). LOC ~2.2K en init core. Pendiente: cobertura de tests sobre snapshot restore en escenarios con stale fds.