diff --git a/docs/28-servidor-de-produccion.md b/docs/28-servidor-de-produccion.md index 93f14b73..116f0695 100644 --- a/docs/28-servidor-de-produccion.md +++ b/docs/28-servidor-de-produccion.md @@ -1042,6 +1042,52 @@ Y **la imagen no trae `arjectl`**: tras poner la config hubo que REINICIAR para intentarlo. El backoff de `restart` se agota y no hay forma de pedirle a PID 1 que relance un ente en caliente. Para una caja de producción eso es una pieza que falta, no una comodidad. +### 6.12 🎛️ `arjectl` en la imagen: control en caliente *(2026-09-14)* + +El §6.11 cerró con «la imagen no trae `arjectl`, hubo que reiniciar la máquina para arrancar un +servicio». Ya lo trae, y **no hubo que escribir nada**: el cliente existía en tawasuyu y se llama +**`arje-ctl`** (el crate; el binario es `arjectl`). Buscarlo por `arjectl` no lo encontraba, y de ahí +salió la conclusión falsa de que faltaba implementarlo — el protocolo (`arje-bus::BusRequest`) ya +traía `ListEntes`, `SpawnCardFromDisk`, `StopCardFromDisk`, `KillEnte` y `EnteStatus`. + +`recipes/arjectl.toml` lo construye **del mismo commit que `arje-zero`** (`98db584f`), y eso no es +comodidad: el bus es un protocolo entre dos binarios, y un cliente de otro árbol puede conectar y no +entenderse con el init. Publica **sólo `arjectl`**; el crate también produce un `systemctl` de +camuflaje que acá no se instala — un `systemctl` en el PATH de una distro sin systemd invita a +escribir runbooks con el verbo ajeno. + +#### El hueco que sólo se ve usándolo: el genesis no alcanza + +Con `arjectl` en la imagen, el primer intento falló con un mensaje que nombra la causa: + + $ arjectl start gitea + Error: arje-zero rechazó: card gitea: No such file or directory + (buscada en /etc/arje/cards.d/gitea.json) + +`start`/`restart` usan `SpawnCardFromDisk`, que lee **`/etc/arje/cards.d/