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 1411Shell 141Markdown 85Rust 842928 Sutichaykuna

⎇ 2f9253886ff843d9701ac61a9c3ff4f2cd43ef33 recipes/willay-crosscheck.toml TOML · 63 siq'ikuna · 4.1 KB Ñawpa willay ch'uya

INTERCAMBIO de tejido hecho: la identidad cambió de máquina, no de dueño 897b4eaf2 · Sergio ·

1# willay-crosscheck — el cruce de willay, que ESCUCHA en la red.
2#
3# ⚠ El paquete NO se llama como el binario: el crate es `willay-cruce` y el ejecutable
4# `willay-crosscheck`. Por eso van `-p` y `--bin`, que no son redundantes acá.
5# Medido en gioser: `--listen /ip4/0.0.0.0/tcp/4103 --label momento`. La etiqueta nombra a la
6# MÁQUINA, así que en la caja nueva no puede decir `momento` — se decide al escribir la Card.
7#
8# Receta Cargo contra el monorepo de tawasuyu, pinneada al MISMO commit que `shuma-*` y
9# `puriy-costura`: el árbol de fuentes se comparte por `<dep>-<sha>`, así que un pin distinto es otro
10# vendoreo de 2,4 G. Estática musl con zig-cc — la caja la arranca el init y no puede depender de
11# encontrar un cargador, que es justo lo que le falta al binario glibc de gioser.
12
13name    = "willay-crosscheck"
14version = "0.1.0"
15license = "MIT OR Apache-2.0"
16
17[source]
18repo   = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git"
19commit = "23a292863f53b355c5c02d6185904f2c33d8ab42"
20# tawasuyu COMMITEA su propio `vendor/` (smithay parcheado, enchufado por `[patch.crates-io]` POR
21# RUTA); el `cargo vendor` de takana lo pisaría y el error habla de `taffy`, no de esto.
22cargo_vendor_dir = ".hammer-cargo-vendor"
23
24[build]
25compiler = "zig-cc"
26target   = "x86_64-linux-musl"
27link     = "static"
28flags    = ["-p", "willay-cruce", "--bin", "willay-crosscheck"]
29
30# ── EL SERVICIO (SDD 30) ────────────────────────────────────────────────────────────────────────
31# ⚠ `--label` NOMBRA A LA MÁQUINA. En gioser decía `momento`, y copiarlo tal cual habría puesto a la
32# caja nueva a identificarse con el nombre de la que se borra. Sale de `hostname`, que desde hoy la
33# caja tiene de verdad (§6.38: antes decía `(none)`) — y si algún día vuelve a no tenerlo, la guarda
34# lo dice en vez de anunciarse como «(none)» en la red.
35[[service]]
36label      = "willay-crosscheck"
37id         = "01M2EKDA00W1YCR055CHK00012"
38exec       = "/bin/busybox"
39argv = ["sh", "-c", "h=$(hostname); case \"$h\" in \"\"|\"(none)\") echo 'willay-crosscheck: la máquina no tiene hostname y `--label` es como se anuncia en la red — arreglá /etc/hostname (hay una Card OneShot que lo aplica)' >&2; exit 78;; esac; test -s $HOME/.tejido/roster.postcard || { echo 'willay-crosscheck: no hay roster en $HOME/.tejido/roster.postcard — este servicio vive DENTRO de la red de tejido y sin padrón no tiene con quién cruzar. Llega con el INTERCAMBIO de tejido, no antes' >&2; exit 78; }; mkdir -p /run/willay; exec /usr/bin/willay-crosscheck --listen /ip4/0.0.0.0/tcp/4103 --label \"$h\""]
40envp       = [["PATH", "/usr/bin:/bin"], ["HOME", "/var/lib/tejido"], ["XDG_RUNTIME_DIR", "/run/willay"], ["XDG_DATA_HOME", "/var/lib"]]
41networking = "full"
42cgroup     = "arje.slice/willay-crosscheck"
43restart    = { initial_ms = 1000, max_ms = 30000 }
44
45# ⚠ MEDIDO AL ARRANCARLO (2026-09-16): **no es independiente de `tejido`**. Corriendo la misma línea
46# a mano en la caja:
47#
48#     Error: no hay roster en /root/.tejido/roster.postcard — emparejá primero (`tejido serve` / `tejido join`)
49#
50# O sea que `willay-crosscheck` vive DENTRO de la red de tejido y hereda su condición: **se enciende
51# en el mismo movimiento en que tejido se intercambia**, no antes y no en paralelo con el de gioser.
52# Por eso sale del `genesis` y queda sólo en `cards.d`, como `tejido`.
53
54# ⚠ EL ENTORNO NO SE ADIVINÓ: se leyó del proceso vivo en gioser (`/proc/<pid>/environ`), que lo
55# arrancaron así:
56#
57#     sudo sh -c 'setsid nohup env XDG_RUNTIME_DIR=/run/willay XDG_DATA_HOME=/var/lib \
58#       HOME=/home/sergio /usr/local/bin/willay-crosscheck --listen … --label momento …'
59#
60# O sea: **root, pero con `HOME` apuntando al home donde vive `~/.tejido`**. Acá esa identidad vive
61# en `/var/lib/tejido`, así que `HOME` va ahí — y por eso la guarda mira `$HOME/.tejido`, no una
62# ruta fija. Sin ese `HOME` el binario busca en `/root/.tejido`, que no existe ni acá ni allá: el
63# servicio arrancaría y no encontraría padrón, que es exactamente el fallo que se midió primero.