# 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 `-`, 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 = "619431cac9753cd55d0f9e2d99ff8efe7fab651b" # 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"] # ── LA CUENTA Y EL SERVICIO (SDD 30) ──────────────────────────────────────────────────────────── # Fuera de `hash_inputs`. En gioser corre como `sergio`, nunca como root ⇒ cuenta propia. [[user]] name = "tejido" uid = 964 home = "/var/lib/tejido" # ⚠⚠ **ESTE NO SE PUEDE ENCENDER MIENTRAS EL VIEJO SIGA VIVO, y es distinto de todo lo anterior.** # Con los vhosts la regla fue «mudá el DNS y dejá el origen encendido, así volver cuesta un minuto» # (§6.26). Acá NO vale: el README de tejido dice que **la clave que el roster atesta ES la identidad # de transporte libp2p** (`~/.tejido/device.seed`). Dos máquinas con la misma semilla son el MISMO # PeerId en la red — no dos réplicas: dos impostores mutuos. Por eso la Card queda en `cards.d` y # **no entra al `genesis`**: se enciende cuando el de gioser se apaga, en ese orden, y es un # INTERCAMBIO, no una convivencia. # # Y por eso la guarda EXIGE la identidad en vez de crearla: un `tejido` que genera semillas nuevas # arranca perfecto y es OTRA máquina para la flota — se pierde el padrón de teléfonos dados de alta. [[service]] label = "tejido" id = "01M2EKDA00TEJ1D0RE1AY00001" exec = "/bin/busybox" argv = ["sh", "-c", "/bin/grep -q '^tejido:' /etc/passwd || { echo 'tejido: falta el usuario `tejido` en /etc/passwd — lo declara esta receta con [[user]]' >&2; exit 78; }; test -s /var/lib/tejido/.tejido/device.seed || { echo 'tejido: falta /var/lib/tejido/.tejido/device.seed — es la IDENTIDAD libp2p de esta máquina y NO se genera: viene de ~/.tejido del origen. Generar otra es ser otra máquina para la flota' >&2; exit 78; }; cd /var/lib/tejido || exit 78; exec /usr/bin/setuidgid tejido /usr/bin/tejido relay"] envp = [["PATH", "/usr/bin:/bin"], ["HOME", "/var/lib/tejido"], ["USER", "tejido"]] networking = "full" cgroup = "arje.slice/tejido" restart = { initial_ms = 1000, max_ms = 30000 }