gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1389Shell 137Markdown 80Rust 802602 Definiciones

los 9 daemons propios entran al catálogo, más el askpass que shuma pidió al arrancar

Decisión del usuario: «viven todos los tawasuyu». Se construyen, no se copian — y no es preferencia:
tres de ellos (`tejido`, `pacha-secretos` y el `shuma-gateway` de ayer) corren en gioser desde un
INODO BORRADO, o sea que el binario ya no existe en disco y el proceso vive porque nadie lo mató.

Las diez, todas contra el mismo pin `23a292863` que `shuma-*` y `puriy-costura` — el árbol de
fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro vendoreo de 2,4 G:

  willay-daemon · willay-crosscheck · tejido · tupu · matilda · thasnuna · sandokan-watch ·
  pacha · pacha-secretos · shuma-askpass

⚠ CUATRO NO SE LLAMAN COMO SU PAQUETE, y por eso `-p` y `--bin` no son redundantes:
`willay-crosscheck`←`willay-cruce`, `tupu`←`tupu-cli`, `thasnuna`←`thasnuna-daemon`,
`sandokan-watch`←`sandokan-seguridad-core`, `pacha`←`pacha-cli`. Comprobado crate por crate en el
commit pinneado: los diez son miembros del workspace, así que `-p` resuelve.

Cada cabecera lleva lo que MIDIÓ el censo y que la receta sola no dice: `willay-crosscheck` escucha
con `--label momento`, que nombra a la MÁQUINA y no puede viajar tal cual; `tupu`, `matilda` y
`sandokan-watch` escriben los tres en `/var/lib/tupu`, así que necesitan el mismo dueño o dos fallan
en silencio; `matilda` lee el access log de caddy; `tejido` y `thasnuna` tienen identidad y token que
NO son reproducibles —generar otros es ser otra máquina para la flota, o un bot sin sus teléfonos—,
así que su Card tendrá que exigirlos, no crearlos.

`takana hash` da los diez sin construir. Van a `recipes/incoming/`, que es la cola que el worker
muele; se promueven a canónicas cuando sellen, como shuma.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

0ab57ba0fba86298ada2eee39a25da4f32e3f070 · por Sergio · (hace 1 mes) · padre 11a9ead67 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

10 archivos · +272 −0

diff --git a/recipes/incoming/matilda.toml b/recipes/incoming/matilda.toml
new file mode 100644
index 00000000..08290814
--- /dev/null
+++ b/recipes/incoming/matilda.toml
@@ -0,0 +1,28 @@
+# matilda — grabador: `matilda record --interval 60 --root /var/lib/tupu --access-log …`.
+#
+# ⚠ Lee el ACCESS LOG de caddy (`/var/log/caddy/requests.json`). En la caja nueva ese fichero
+# existe sólo si el Caddyfile importa el snippet `acceso` — que sí lo hace. Si algún día deja
+# de hacerlo, matilda no falla: graba vacío.
+# El crate vive en `02_ruway/shuma/baremetal/matilda-app` y su paquete se llama `matilda`.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "matilda"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "matilda", "--bin", "matilda"]
diff --git a/recipes/incoming/pacha-secretos.toml b/recipes/incoming/pacha-secretos.toml
new file mode 100644
index 00000000..a64acea4
--- /dev/null
+++ b/recipes/incoming/pacha-secretos.toml
@@ -0,0 +1,28 @@
+# pacha-secretos — el guardián de secretos de pacha.
+#
+# ⚠ En gioser corre desde un INODO BORRADO: el binario ya no existe en disco y el proceso vive
+# porque nadie lo mató (SDD 28 §6.34). Reconstruirlo es la única forma de tenerlo del otro lado.
+# Y por lo que hace, su cuenta tiene que ser propia y sin privilegio: no comparte usuario con
+# la telemetría.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "pacha-secretos"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "pacha-secretos", "--bin", "pacha-secretos"]
diff --git a/recipes/incoming/pacha.toml b/recipes/incoming/pacha.toml
new file mode 100644
index 00000000..714eb6cc
--- /dev/null
+++ b/recipes/incoming/pacha.toml
@@ -0,0 +1,26 @@
+# pacha — `pacha daemon`, corriendo en gioser sin que nadie lo declare.
+#
+# El paquete es `pacha-cli` y el binario `pacha`. Sus reglas viven en `~/.config/pacha/reglas*.ron`:
+# son DECISIONES del usuario, no defaults, y no las genera nada.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "pacha"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "pacha-cli", "--bin", "pacha"]
diff --git a/recipes/incoming/sandokan-watch.toml b/recipes/incoming/sandokan-watch.toml
new file mode 100644
index 00000000..971ca4fa
--- /dev/null
+++ b/recipes/incoming/sandokan-watch.toml
@@ -0,0 +1,26 @@
+# sandokan-watch — vigía: `--every 60 --state /var/lib/sandokan-watch.json --record --root /var/lib/tupu`.
+#
+# El paquete es `sandokan-seguridad-core` y el binario `sandokan-watch`.
+# ⚠ Escribe en `/var/lib/tupu`, el mismo directorio que `tupu` y `matilda` (ver esa receta).
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "sandokan-watch"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "sandokan-seguridad-core", "--bin", "sandokan-watch"]
diff --git a/recipes/incoming/shuma-askpass.toml b/recipes/incoming/shuma-askpass.toml
new file mode 100644
index 00000000..4d785d6a
--- /dev/null
+++ b/recipes/incoming/shuma-askpass.toml
@@ -0,0 +1,28 @@
+# shuma-askpass — el que pide la contraseña cuando una sesión de shuma corre `sudo` o `ssh`.
+#
+# Lo pidió el propio daemon al arrancar en la caja nueva (SDD 28 §6.37):
+#     askpass: no encontré `shuma-askpass` … — sudo/ssh pedirán la clave por el TTY
+# No bloquea la consola; sin él, una sesión web que pide contraseña se queda esperando en un TTY
+# que nadie está mirando.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "shuma-askpass"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "shuma-askpass", "--bin", "shuma-askpass"]
diff --git a/recipes/incoming/tejido.toml b/recipes/incoming/tejido.toml
new file mode 100644
index 00000000..56ecdd28
--- /dev/null
+++ b/recipes/incoming/tejido.toml
@@ -0,0 +1,28 @@
+# tejido — el relay de la flota: `tejido relay` en gioser, sirviendo :4102 y :33097.
+#
+# ⚠ Su IDENTIDAD no es reproducible: `~/.tejido/{persona,device,relay}.seed` + el padrón
+# (`roster.postcard`). Generar semillas nuevas no es «reinstalar»: es ser OTRA máquina para el
+# resto de la flota y perder los teléfonos dados de alta. El binario se construye; la identidad
+# se MUDA. La Card tiene que exigirla, no crearla.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "tejido"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "tejido", "--bin", "tejido"]
diff --git a/recipes/incoming/thasnuna.toml b/recipes/incoming/thasnuna.toml
new file mode 100644
index 00000000..1b77e740
--- /dev/null
+++ b/recipes/incoming/thasnuna.toml
@@ -0,0 +1,26 @@
+# thasnuna — el bot: `thasnuna run --wait 25`.
+#
+# ⚠ Su config NO está en el repo a propósito (lo dice su INSTALAR.md): el token de telegram y el
+# roster de teléfonos viven en `~/.config/thasnuna/`. Sin eso el binario está y el bot no existe.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "thasnuna"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "thasnuna-daemon", "--bin", "thasnuna"]
diff --git a/recipes/incoming/tupu.toml b/recipes/incoming/tupu.toml
new file mode 100644
index 00000000..cabab521
--- /dev/null
+++ b/recipes/incoming/tupu.toml
@@ -0,0 +1,28 @@
+# tupu — el colector de telemetría: `tupu collect --interval 10 --root /var/lib/tupu`.
+#
+# El paquete es `tupu-cli` y el binario `tupu`.
+# ⚠ `/var/lib/tupu` es un directorio COMPARTIDO: escriben ahí `tupu`, `matilda` y
+# `sandokan-watch`. Los tres necesitan el mismo dueño, o dos de ellos fallan al escribir y el
+# tercero se lleva los datos incompletos sin que nada lo diga.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "tupu"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "tupu-cli", "--bin", "tupu"]
diff --git a/recipes/incoming/willay-crosscheck.toml b/recipes/incoming/willay-crosscheck.toml
new file mode 100644
index 00000000..3b7674f4
--- /dev/null
+++ b/recipes/incoming/willay-crosscheck.toml
@@ -0,0 +1,28 @@
+# willay-crosscheck — el cruce de willay, que ESCUCHA en la red.
+#
+# ⚠ El paquete NO se llama como el binario: el crate es `willay-cruce` y el ejecutable
+# `willay-crosscheck`. Por eso van `-p` y `--bin`, que no son redundantes acá.
+# Medido en gioser: `--listen /ip4/0.0.0.0/tcp/4103 --label momento`. La etiqueta nombra a la
+# MÁQUINA, así que en la caja nueva no puede decir `momento` — se decide al escribir la Card.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "willay-crosscheck"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "willay-cruce", "--bin", "willay-crosscheck"]
diff --git a/recipes/incoming/willay-daemon.toml b/recipes/incoming/willay-daemon.toml
new file mode 100644
index 00000000..1bfced3d
--- /dev/null
+++ b/recipes/incoming/willay-daemon.toml
@@ -0,0 +1,26 @@
+# willay-daemon — el demonio de willay, que en gioser corre declarado y vivo.
+#
+# Su estado son 5,3 M en `/var/lib/willay/indice`, que viajan con la mudanza. Corre sin
+# argumentos: toda su configuración sale de su estado y del entorno.
+#
+# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
+# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
+# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
+# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
+
+name    = "willay-daemon"
+version = "0.1.0"
+license = "MIT OR Apache-2.0"
+
+[source]
+repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
+commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
+# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
+# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
+cargo_vendor_dir = ".hammer-cargo-vendor"
+
+[build]
+compiler = "zig-cc"
+target   = "x86_64-linux-musl"
+link     = "static"
+flags    = ["-p", "willay-daemon", "--bin", "willay-daemon"]