tawasuyu

tawasuyu/brahman

Rust 334TOML 129Markdown 39JSON 174745 Sutichaykuna

feat(carmen): carmen-dm como Ente supervisado en la Semilla arje-host

Pieza 2 del DM: declara `mirada-compositor --greeter` como hijo genesis
de arje-zero en `seeds/arje-host.card.json`, reemplazando el agetty de
tty1. Con `supervision: Restart { 2000, 60000 }`, arje-zero lo
respawnea si panica — la resiliencia «PID 2 supervisado» (sshd queda
como rescate remoto). Va en arje-host (boot de hardware real con rootfs
y mesa), NO en arje-prod (seed del initrd, sin GPU).

Además: `seeds/validate.sh` tenía referencias `ente-zero` stale del
rename ente→arje — corregidas a `arje-zero` (paquete + binario). Las
tres seeds validan. Tabla de seeds actualizada en docs/arje-boot.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

663fd6e38afe5b7c695928d28fcefd1deb58a752 · ruwaq sergio · (5 killa ñawpaq) · tayta 758f61f52 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

3 qillqakuna · +17 −10

diff --git a/docs/arje-boot.md b/docs/arje-boot.md
index 7b19906..61bc5a6 100644
--- a/docs/arje-boot.md
+++ b/docs/arje-boot.md
@@ -235,6 +235,7 @@ de implementar como `Capability::SwitchRoot`.
 | ----------------------------- | ----------------------------------------------------- |
 | `seeds/arje-minimal.card.json` | PID 1 + 1 shell `/bin/sh`. Smoke test para QEMU.     |
 | `seeds/arje-prod.card.json`    | Constelación completa: 14 compat shims + getty.      |
+| `seeds/arje-host.card.json`    | Boot en hardware real: mount/swap/dbus/red/sshd + **carmen-dm** (`mirada-compositor --greeter`) como entrada gráfica. |
 
 ### 5b. Validación
 
diff --git a/seeds/arje-host.card.json b/seeds/arje-host.card.json
index ffa001d..82e399e 100644
--- a/seeds/arje-host.card.json
+++ b/seeds/arje-host.card.json
@@ -232,16 +232,22 @@
     },
     {
       "schema_version": 1,
-      "id": "01J8YVKZH0M0M0M0M0M0M0M0G1",
-      "label": "getty-tty1",
+      "id": "01J8YVKZH0M0M0M0M0M0M0M0CM",
+      "label": "carmen-dm",
       "provides": [], "requires": [],
       "permissions": { "networking": "none", "filesystem": "read-write", "ipc": { "allow": [] }, "processes": true },
       "soma": { "namespaces": {"mount":false,"pid":false,"net":false,"uts":false,"ipc":false,"user":false,"cgroup":false},
                 "rlimits": {"mem_bytes":null,"nproc":null,"nofile":null},
-                "cgroup": {"path":"ente.slice/getty","cpu_weight":null,"io_weight":null},
+                "cgroup": {"path":"ente.slice/carmen","cpu_weight":null,"io_weight":null},
                 "cpu_affinity": null },
-      "payload": { "Native": { "exec": "/sbin/agetty", "argv": ["--noclear", "tty1", "linux"], "envp": [] } },
-      "supervision": { "Restart": { "initial": 100, "max": 30000 } },
+      "payload": { "Native": {
+        "exec": "/usr/bin/mirada-compositor",
+        "argv": ["--greeter", "--drm"],
+        "envp": [ ["PATH", "/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin"],
+                  ["XDG_RUNTIME_DIR", "/run"],
+                  ["MIRADA_GREETER_BIN", "/usr/bin/mirada-greeter"] ]
+      } },
+      "supervision": { "Restart": { "initial": 2000, "max": 60000 } },
       "lifecycle": "daemon", "priority": "high",
       "flow": { "input": [], "output": [] }, "genesis": []
     }
diff --git a/seeds/validate.sh b/seeds/validate.sh
index 4615098..dcdaa1d 100755
--- a/seeds/validate.sh
+++ b/seeds/validate.sh
@@ -3,7 +3,7 @@
 # Uso: seeds/validate.sh seeds/arje-prod.card.json
 #
 # Método: copiamos la Card como `seed.card.json` en un cwd vacío y corremos
-# ente-zero en dev-mode 4 s. Si carga, valida, e instancia genesis, la
+# arje-zero en dev-mode 4 s. Si carga, valida, e instancia genesis, la
 # Card es estructuralmente correcta — los binarios de los hijos pueden
 # faltar en el host (vivirán en /usr/sbin del initrd).
 
@@ -17,11 +17,11 @@ fi
 SEED="$(realpath "$1")"
 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
-BIN="$REPO_DIR/target/release/ente-zero"
+BIN="$REPO_DIR/target/release/arje-zero"
 
 if [ ! -x "$BIN" ]; then
-  echo "[validate] compilando ente-zero (release)…"
-  (cd "$REPO_DIR" && cargo build --quiet --release -p ente-zero)
+  echo "[validate] compilando arje-zero (release)…"
+  (cd "$REPO_DIR" && cargo build --quiet --release -p arje-zero)
 fi
 
 SCRATCH="$(mktemp -d -t arje-validate.XXXXXX)"
@@ -29,7 +29,7 @@ trap 'rm -rf "$SCRATCH"' EXIT
 cp "$SEED" "$SCRATCH/seed.card.json"
 
 cd "$SCRATCH"
-LOG="$SCRATCH/ente-zero.log"
+LOG="$SCRATCH/arje-zero.log"
 
 # `timeout` retorna 124 al matar el proceso (dev-mode termina solo a los 4 s
 # de todas formas). Aceptamos cualquier exit code aquí; lo que importa es lo