tawasuyu

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 1181Shell 82Rust 62Markdown 521515 Definiciones

SDD 26 §3.ter: el muro del display del PGO está despejado, con evidencia

El PGO necesita correr el navegador para juntar el perfil, y las distros lo
hacen bajo xvfb-run. Nosotros no tenemos X11 (Wayland-only), así que el plan
decía «la salida es un sway headless». Ya no es plan: se corrió.

sway con WLR_BACKENDS=headless y WLR_RENDERER=pixman arranca en gioser —un LXC
SIN /dev/dri, o sea sin GPU ninguna— y dibuja píxeles reales. La captura va como
evidencia: sway 1.10 / wlroots 0.18.2 / foot 1.27.0, los tres binarios nuestros,
salida HEADLESS-1 a 1280x720. Ciclo completo ~2 min.

Dos cosas que costó y quedan escritas para no repetirlas:

· Hidratar BAJO el montaje del store. hydrate-profile.py enlaza, y un hardlink
  no cruza montajes: con --into work/... sale EXDEV porque el store está en otro
  disco. Con --into store/.rootfs/sway son 193/193 nodos y 4,9 G que no ocupan.

· Inyectar el loader de musl. sway salió DINÁMICO y pide
  /lib/ld-musl-x86_64.so.1, que el cierre no trae. El error es
  «exec: /usr/bin/sway: not found», que se lee como «falta el binario» cuando lo
  que falta es su INTÉRPRETE. En musl el libc.so ES el loader, así que se
  resuelve con un --ro-bind. Misma familia que el resto de la noche: el mensaje
  nombra lo que buscó, no lo que falta.

Queda el segundo muro del PGO, que es de diseño y no de infra: el profdata no es
determinista, así que hay que generarlo UNA vez y sellarlo como artefacto propio
consumido por hash.

e88e4ab3d766000b0a61dc0d876b5b6415744bb0 · por Sergio · (hace 1 mes) · padre ff9dffaff · ver el árbol en este commit

Delta semántico

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

2 archivos · +19 −0

diff --git a/docs/26-atuq-envoltorio-gecko.md b/docs/26-atuq-envoltorio-gecko.md
index 0334d865..a234fd7b 100644
--- a/docs/26-atuq-envoltorio-gecko.md
+++ b/docs/26-atuq-envoltorio-gecko.md
@@ -172,6 +172,25 @@ y el scope de addons se juntan en una sola pasada, no en seis.
 camino no existe acá. La salida hammer-nativa es correrlo bajo un **sway headless**
 (`WLR_BACKENDS=headless`), que ya tenemos del frente wlr/sway y arranca en segundos.
 
+**✅ EL MURO DEL DISPLAY ESTÁ DESPEJADO (2026-09-06).** No es una previsión: se corrió. `sway`
+headless con `WLR_BACKENDS=headless` y `WLR_RENDERER=pixman` arranca en **gioser**, que es un LXC
+**sin `/dev/dri`** —o sea sin GPU ninguna, todo software— y dibuja píxeles de verdad:
+`docs/evidencia/sway-headless-gioser-sin-gpu-2026-09-06.png` (sway 1.10 / wlroots 0.18.2 /
+foot 1.27.0, los tres binarios nuestros, salida `HEADLESS-1` a 1280x720). El ciclo entero es de
+~2 min con `scripts/wlr/sway-headless.sh`.
+
+Dos cosas que hubo que resolver y conviene tener escritas antes de repetirlo:
+· **Hidratar bajo el montaje del store.** `hydrate-profile.py` ENLAZA, y un hardlink no cruza
+  montajes: con `--into work/...` sale `EXDEV` porque el store vive en otro disco. Con
+  `--into store/.rootfs/sway` son 193/193 nodos, 41.677 ficheros y **4,9 G que no ocupan** (son
+  hardlinks al store).
+· **Inyectar el loader de musl.** `sway` salió DINÁMICO y pide `/lib/ld-musl-x86_64.so.1`, que el
+  cierre no trae; el error es `exec: /usr/bin/sway: not found`, que se lee como «falta el binario»
+  y lo que falta es su intérprete. Se resuelve con
+  `--ro-bind /usr/lib/musl/lib/libc.so /lib/ld-musl-x86_64.so.1` (en musl el `libc.so` ES el
+  loader). Es la misma familia que el resto de la noche: el mensaje nombra lo que buscó, no lo que
+  falta.
+
 **Y el perfil no es determinista.** Los contadores dependen del timing de la corrida, así que dos
 generaciones del profdata no dan los mismos bytes — a las distros no les importa porque no persiguen
 bit-repro; a nosotros nos rompe el invariante. La salida: **generar el perfil UNA vez y sellarlo como
diff --git a/docs/evidencia/sway-headless-gioser-sin-gpu-2026-09-06.png b/docs/evidencia/sway-headless-gioser-sin-gpu-2026-09-06.png
new file mode 100644
index 00000000..c4de45b7
Binary files /dev/null and b/docs/evidencia/sway-headless-gioser-sin-gpu-2026-09-06.png differ