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 1471Shell 173Rust 105Markdown 943545 Definitions

⎇ e852f4849157d026552008ad054cf4c31b8eb532 recipes/arje-zero.toml TOML · 53 lines · 3.6 KB History raw

takana etapa 5a: los comentarios de las 741 recetas e852f4849 · Sergio ·

1# arje-zero — init PID 1 de arje (ADR 0007), construido por el lab de takana como **puente
2# build-side** hacia "arje es el init de takana".
3#
4# Receta Cargo: la fuente es el monorepo tawasuyu a un commit fijado (ADR 0006), `-p arje-zero`
5# para construir sólo ese binario; las deps se vendorean en el fetch (Lote 6) ⇒ build `--offline`
6# hermético. Estático con zig cc cross al target — lo que pide un PID 1 (sin loader del host).
7#
8# Es un PUENTE, no el init todavía: prueba que el lab cruza al repo de tawasuyu y produce el
9# binario del init. Hacerlo PID 1 del rootfs (seed `card.json`, `arje-bus`, hammerd como Card de
10# servicio) es el paso "init real" posterior (plan B.2 + contrato de runtime de arje). El plan C.3
11# prefiere extraer arje-zero a un front-door standalone para no vendorear el monorepo entero;
12# sourcearlo del monorepo pinned es el interino, igual que hammerd desde el repo takana.
13
14name    = "arje-zero"
15version = "0.0.1"
16license = "MIT"
17
18# ── POR QUÉ SE MOVIÓ EL PIN (2026-07-30) ────────────────────────────────────────────────────────
19# El runbook de GNOME pedía «arreglar el `identity mismatch` del Announce al bus del fractal (hoy
20# sólo un WARN)». Eran dos cosas mal: no lo emite arje-logind-compat sino el `bus_mediator` de
21# arje-zero, y **no había nada que arreglar acá — ya estaba arreglado río arriba**, en tawasuyu
22# `ce96cfa8d` (2026-07-29). Nuestro binario era viejo, nada más: el log de la VM decía
23# `identity mismatch — rechazando request` y la fuente actual dice `sigo como anónimo`.
24#
25# Y no era cosmético, aunque el log lo pareciera. El commit del fix se llama «apagar/reiniciar moría
26# por un ENTE_ID heredado, no por permisos»: `ENTE_ID` se inyecta en el entorno del Ente y **lo
27# hereda todo el árbol de procesos**, así que cualquier nieto reclamaba esa identidad con su propio
28# pid, el mediador veía pid distinto y RECHAZABA la request entera. Con el fix degrada a anónimo, que
29# es lo correcto: la identidad no se prueba, pero los verbos anónimos siguen andando.
30#
31# EL COMMIT ELEGIDO no es nuevo: es **el mismo que ya usa `arje-polkit-compat`**, de la rama
32# `selfhost/arje-zero-attest-lockfile`. Se llegó a él descartando el camino obvio: la rama vieja
33# (`selfhost/arje-zero-lockfile`, 9967b02c) está **3951 commits detrás de main** y el cherry-pick del
34# fix choca contra ficheros que allá ni existen — este mismo `bus_mediator.rs` creció 966 líneas en el
35# medio. O sea que arje-zero se reescribió, y traer «sólo el fix» era ficción. La rama de attest, en
36# cambio, ya CONTIENE `ce96cfa8d`, ya versiona el `Cargo.lock` de la raíz (lo mismo que motivaba la
37# rama vieja) y ya está probada: es el árbol del que salen los dos compat daemons. Las tres recetas
38# tawasuyu quedan en un solo commit, que es una propiedad que vale por sí sola.
39[source]
40# El `commit` es el identificador inmutable (la URL es sólo locator, no entra al hash). Sin el
41# `Cargo.lock` del workspace el monorepo lo gitignora, el fetch vendorea SIN --locked ⇒ las deps
42# derivan en el tiempo y arje-zero (y of_tree(stage1)) deja de ser reproducible.
43repo   = "gitea@git.tawasuyu.net:tawasuyu/tawasuyu.git"
44commit = "98db584fd28d9ff2bf34c9cf7d7db2e1de0b3fd0"
45# Este árbol COMMITEA su propio `vendor/` (la copia parcheada de smithay que mirada necesita) y el
46# `cargo vendor` de takana lo pisaría. Ver [[takana-cargo-vendor-clobbers-project-vendor]].
47cargo_vendor_dir = ".hammer-cargo-vendor"
48
49[build]
50compiler = "zig-cc"
51target   = "x86_64-linux-musl"
52link     = "static"
53flags    = ["-p", "arje-zero"]