# arjectl — el control en caliente del init. Sin esto, una caja de takana sólo se administra # REINICIÁNDOLA, y eso se descubrió del peor modo: la primera imagen del perfil `servidor` levantó # gitea, la card falló por falta de config, el backoff de `restart` se agotó y **no había forma de # pedirle a PID 1 que volviera a intentarlo**. Hubo que reiniciar la máquina entera para arrancar un # servicio (SDD 28 §6.11). # # ══ NO SE ESCRIBIÓ NADA: YA EXISTÍA, Y SE LLAMA `arje-ctl` ═════════════════════════════════════ # El protocolo del bus (`arje-bus::BusRequest`) ya trae `ListEntes`, `SpawnCardFromDisk`, # `StopCardFromDisk`, `KillEnte` y `EnteStatus`; lo que faltaba en la imagen era el CLIENTE, que vive # en `03_ukupacha/arje/runtime/arje-ctl` y da `status`, `list-units`, `start`, `stop` y `restart`. # Buscarlo por `arjectl` no lo encontraba —el crate es `arje-ctl`, el binario `arjectl`— y de ahí # salió la conclusión falsa de que había que escribirlo. # # ══ EL COMMIT ES EL MISMO QUE `arje-zero`, Y NO ES POR COMODIDAD ═══════════════════════════════ # El bus es un PROTOCOLO entre dos binarios: un cliente de otro commit puede hablarle a un init que # ya no entiende lo mismo, y el síntoma sería un `arjectl` que conecta y no obtiene respuesta. Que # `arje-zero`, `arje-polkit-compat` y éste salgan del mismo árbol es la garantía de que el cliente y # el init fueron compilados contra la MISMA definición. De paso reusa el árbol de fuentes ya # fetcheado (ADR 0012). # # ⚠ El crate publica DOS binarios: `arjectl` (soberano) y `systemctl` (drop-in de camuflaje, que # reenvía al systemd real si systemd es el init vivo). Acá se publica **sólo `arjectl`**: la distro # no tiene systemd y un `systemctl` en el PATH invitaría a escribir runbooks con el verbo ajeno. # Ponerlo sería una decisión de compatibilidad, no un efecto colateral de la receta. name = "arjectl" version = "0.0.1" license = "MIT" [source] repo = "gitea@git.tawasuyu.net:tawasuyu/tawasuyu.git" commit = "98db584fd28d9ff2bf34c9cf7d7db2e1de0b3fd0" # Este árbol COMMITEA su propio `vendor/` y el `cargo vendor` de takana lo pisaría — igual que en # `arje-zero.toml`. Ver [[takana-cargo-vendor-clobbers-project-vendor]]. cargo_vendor_dir = ".hammer-cargo-vendor" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" flags = ["-p", "arje-ctl", "--bin", "arjectl"]